Я нахожусь в процессе обновления некоторых старых веб-сайтов Codeigniter 2.x для использования php 7.3 и последней версии Codeigniter (3.1.10) и столкнулся с ошибкой, связанной с аутентификацией CKFinder, которая больше не принимает собственный сеанс PHP, который работал. в прошлом.
Раньше это работало:
$_SESSION['authorized'] = TRUE;
А потом внутри конфига CKFinder
return isset($_SESSION['authorized']) && $_SESSION['authorized'];
Однако это дольше распознает сеанс. Я провел некоторое исследование и нашел некоторые другие решения, которые включают использование библиотеки сеансов CI внутри конфигурации CKFinder путем загрузки в CI index.php. например
//test_session.php (inside the root of CKFinders where config.php is stored)
ob_start();
define("REQUEST", "external");
$temp_system_path = $_SERVER["DOCUMENT_ROOT"].'/system';
$temp_application_folder = $_SERVER["DOCUMENT_ROOT"].'/application';
include($_SERVER["DOCUMENT_ROOT"].'/index.php');
ob_end_clean();
$CI =& get_instance();
if ($CI->session->userdata('authorized') === TRUE) {
return true;
}
Этот код работает сам по себе в файле test_sesion.php, хотя мне кажется, что это немного излишне, так как мне также пришлось внести изменения в index.php, чтобы проверить эти временные пути, и обновить контроллер по умолчанию, чтобы игнорировать внешние Запросы. Проблема в том, что когда я пытаюсь внедрить его в конфигурацию CKFinder, он выдает кучу ошибок PHP, особенно в связи с тем, как я использую HVMC с Codeigniter.
Я нашел очень похожие проблемы, но предоставленное решение не работает, а английский очень плохой.
Вызов функции-члена item() для нулевого номера строки MX/Modules.php: 8 ckeditor и kcfinder
Мне интересно, сталкивался ли кто-нибудь с этим раньше или знает способ обойти это и просто использовать собственный сеанс php, как я делал в прошлом.






В итоге я решил эту проблему, обновив CKEditor и CKFinder до последней версии, она может иметь лучшую поддержку PHP 7.3, чем предыдущая версия, которую я использовал.
Похоже, что в PHP 5.X с CI 2.X и более ранних версиях CKFinder можно просто использовать переменную $_SESSION, но в более новых версиях CI 3.X с PHP 7.X требуется более сложное решение.
Если вы используете HMVC от wiredesignz, как я, то другой вопрос, на который я ссылался, полезен, поскольку он устраняет другую ошибку при попытке реализовать это.
метод, который вы дали, является единственным методом, который я когда-либо нашел для работы с приложениями за пределами области ci.