在过去的几个小时里,我一直在努力解决这个问题:
在我的电脑上(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;
}
并且日志显示:“找不到类PHPExcel_Setting”。
如果有人有最直接的线索可以解释为什么它没有加载它会非常感兴趣。
由于
答案 0 :(得分:1)
首先,调试函数__autoload()的输出。也许var_dump会帮助你。验证变量$ fichierClasse的值是否与您需要的文件相同。存在许多关于您的问题的问题。进行更多测试,特别是输出。现在我只能用这个来帮助你。
答案 1 :(得分:0)
好的,当我今天早上回去工作时,我从自己的自动加载器中删除了__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的服务器上运行
由于