2016-08-30 46 views
0

我已经在过去几个小时期间与此struggeling自动加载类:无法从PHPExcel

在我的电脑(Ubuntu的64位,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的($本地)时失败;

我的自动加载磁带机:

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

和日志说: “类PHPExcel_Setting未找到”。

如果任何人有最简单的线索可以解释为什么它不加载它会非常appriciated。

感谢

回答

0

OK,因为我回到今天早上上班,我从我自己的自动加载机取出__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使用的装载机竞争,即使它与registerd的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

感谢

1

首先,调试功能__autoload的输出()。也许一个var_dump帮助你。验证变量$ fichierClasse的值是否与您需要的文件相同。存在关于您的问题的许多问题。针对输出做更多的测试。现在我只能用这个帮助你。

+0

我的__autoload()函数正在与我自己的班,他们中的每一个单装,PHPExcel类被加载,从而PHPExcel_autoloader。 主要问题是为什么所有的类都会使用php7.0加载到我的电脑上,而不是使用php5.3.3加载到服务器上。我无法找到哪个函数已被弃用我们的变化... 感谢您的回复 –

+0

谢谢艾戈,你帮了我很多,我把很多error_log函数,它显示PHPExcel_Setting类是由处理__autoload,但是当它加载失败时,它没有将它传递给下一个自动加载器。 –

+0

太棒了!如果您需要更多帮助,请说! –