#php #kohana
#php #kohana
Вопрос:
Я использую плагин файлового менеджера 3rd party для CMS и хочу включить проверку подлинности из используемого мной фреймворка PHP. Часть аутентификации работает нормально, просто включает затем проверку подлинности, однако затем, похоже, возникает некоторый конфликт между включенными классами и классами файлового менеджера. Например, я получаю сообщение об ошибке «Класс Kohana не найден», когда класс, принадлежащий файловому менеджеру, пытается создать экземпляр класса, принадлежащего фреймворку.
В верхней части моего файла основной записи файлового менеджера у меня есть следующее:
//load Kohana framework for Authorisation
include('../../../../../admin/index.php');
// If not a valid authenticated user, kill page
if ( ! Auth::instance()->logged_in())
{
die('Unauthorized');
}
После проверки подлинности мне больше не нужны включенные файлы и классы, поскольку они, по-видимому, конфликтуют с файловым менеджером. Есть ли способ, которым я могу это сделать, или я неправильно понимаю, что здесь происходит?
Генерируемая ошибка относится к классу файлового менеджера — public_html/media/js/tiny_mce/plugins/ajaxfilemanager/inc/class.file.php [ 67 ]
function file($path=null)
{
$this->__construct($path);
}
Ответ №1:
Class xyz not found
это не признак конфликта — это загрузчик Kohana, который, вероятно, не загружается.
Нет способа «выгрузить» классы внутри PHP-скрипта. Если два пакета имеют общее имя класса, вам придется загружать их в отдельных скриптах или переместить один из них в отдельное пространство имен (требуется PHP 5.3 ). Но, как уже было сказано, в вашем случае вам, вероятно, просто нужно загрузить правильный загрузочный файл, чтобы включить необходимые классы.
Комментарии:
1. Спасибо. Я проверил, что загружается bootstrap (хотя я намеренно запрещаю выполнение обычной маршрутизации) — все, для чего мне нужна Kohana, на самом деле работает нормально, например, включает front controller index.php затем выполните простую проверку подлинности с использованием класса Auth. Я озадачен тем, почему функция в одном из классов файлового менеджера выдает ошибку Kohana not found. Я добавил некоторую дополнительную информацию к своему первоначальному сообщению
2. @djonz наиболее распространенной причиной этого является включение файла с использованием
http://
пути — в этом случае скрипт будет выполняться в отдельном экземпляре PHP, где класс не загружен. В остальном сообщение «класс не найден» в середине скрипта не имеет смысла, если класс был успешно загружен ранее3. интересные повторно включенные файлы с http://, я изучу это, чтобы понять, проблема ли это здесь. Спасибо
4. наконец-то разобрался, что здесь происходит. Оказывается, иногда возникает проблема с eAccelerator (см. eaccelerator.net/ticket/300 ). Когда я отключаю eAccelerator, проблема исчезает. Ах, столько времени потрачено впустую!