Возможно ли удалить включенные классы?

#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, проблема исчезает. Ах, столько времени потрачено впустую!