无法从 PHPExcel 自动加载 类

Unable to autoload classes from PHPExcel

在过去的几个小时里,我一直在为此苦苦挣扎:

在我的电脑上(Ubuntu x64,php7.0,apache2),我已经能够使用 PHPExcel,用一个自制的软件。

另一方面,我必须在我无法升级的服务器(CentOs x64(不是最新的)php 5.3.3 httpd)上部署,并在此服务器上部署 PHPExcel 类 不会加载。

你会发现附上了我自己的自动加载器、phpexcel 自动加载器和包含文件:

来电文件:

include_once 'PHPExcel.php';
include_once 'PHPExcel/IOFactory.php';
if ( class_exists('PHPExcel')  )
  error_log('phpexcel loaded');
else
  error_log('phpexcel notloaded');
...
...
...
$colonnes = array();
$locale = 'fr_fr';
PHPExcel_Settings::setLocale($locale);

调用 PHPExcel_Settings::setLocale($local);

时失败

我的自动加载器:

function __autoload($class_name) {
    $fichierClasse = $_SESSION['PATH_SERVER'] . '/classes/' .$class_name . '.php';
    if (file_exists($fichierClasse))
        require_once $fichierClasse;
    else
        return false;
     }

并且日志显示:"Class PHPExcel_Setting not found"。

如果有人有最细微的线索可以解释为什么它没有加载,我们将非常感激。

谢谢

首先,调试函数 __autoload() 的输出。也许 var_dump 可以帮到你。验证变量 $fichierClasse 的值是否与您需要的文件相同。存在许多关于您的问题的问题。对输出进行更多测试。现在我只能帮到你了。

好的,当我今天早上回去工作时,我从我自己的自动加载器中删除了 __autoload() 函数:

spl_autoload_register(function ($class_name) {
    $fichierClasse = $_SESSION['PATH_SERVER'] . '/classes/' .$class_name . '.php';
    if (file_exists($fichierClasse))
        require_once $fichierClasse;
    else
        return false;
});

成功了!

事实上,_autoload() 函数与 PHPExcel 使用的 Loader 竞争,即使它使用 spl_autoload_register 注册了 __autoload() 函数:

public static function Register() {
    if (function_exists('__autoload')) {
        //    Register any existing autoloader function with SPL, so we don't get any clashes
        spl_autoload_register('__autoload');
    }
    //    Register ourselves with SPL
    return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'));
}   //    function Register()

我仍然不太明白为什么它在我的计算机上使用 PHP7.0 而不是在服务器上使用 PHP5.3.3

谢谢