无法从 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
谢谢
在过去的几个小时里,我一直在为此苦苦挣扎:
在我的电脑上(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
谢谢