CKFinder with Codeigniter 3 & PHP 7.3 - CheckAuthentication with PHP Session

CKFinder with Codeigniter 3 & PHP 7.3 - CheckAuthentication with PHP Session

我正在升级一些较旧的 Codeigniter 2.x 网站以使用 php 7.3 和最新版本的 Codeigniter (3.1.10),并且遇到了 CKFinder 的错误身份验证不再接受过去有效的 PHP 本机会话。

这之前有效:

$_SESSION['authorized'] = TRUE;

然后在 CKFinder 配置里面

return isset($_SESSION['authorized']) && $_SESSION['authorized'];

然而,这不再识别会话。我做了一些研究并找到了一些其他解决方案,这些解决方案涉及通过加载 CI 的 index.php 在 CKFinder 配置中使用 CI 的会话库。例如

//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 一起使用。

我发现了一个非常相似的问题,但是提供的解决方案不起作用,而且英文很糟糕

Call to a member function item() on null MX/Modules.php Line Number: 8 ckeditor and kcfinder

我想知道是否有人曾经 运行 进入过这个或者知道绕过这个的方法并且像我过去那样使用原生 php 会话。

我最终通过升级到最新版本的 CKEditor 和 CKFinder 解决了这个问题,它可能比我使用的以前的版本更好地支持 PHP 7.3。

似乎在 PHP 5.X 与 CI 2.X 和旧版本的 CKFinder 上,只使用 $_SESSION 变量是可以的,但在较新版本的 CKFinder 上CI 3.X 和 PHP 7.X 需要这个更复杂的解决方案。

如果像我一样使用 wiredesignz 的 HMVC,那么我提到的另一个问题很有帮助,因为它解决了尝试实现此问题时的另一个错误。