2016-08-30 82 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

太棒了!如果您需要更多幫助,請說! –