2011-10-21 166 views
1

我得到我的生產服務器(CentOS的5.4和PHP 5.3.5)在此錯誤:類 'PharData' 未找到

Warning: include_once(PharData.php): failed to open stream: No such file or directory in /var/www/ZendFramework/library/Zend/Loader.php on line 146

Warning: include_once(): Failed opening 'PharData.php' for inclusion (include_path='/var/www/fw:/var/www/vmms:/var/www/ZendFw/library:.:/usr/share/pear:/usr/share/php') in /var/www/ZendFw/library/Zend/Loader.php on line 146

Fatal error: Class 'PharData' not found in /var/www/vm/app/Backup.php on line 40

這是一個失敗的代碼:

$phar = new PharData($imageBackupFile); 
$phar->buildFromDirectory($imageDir); 
Logger::info("Image directory backed up to: $imageBackupFile"); 

這代碼在我自己的計算機上正常工作。

PharData應該是默認在PHP 5.3+包括...

感謝您的幫助!


UPDATE:

我使用Zend自動加載功能來加載使用此代碼良好的PHP文件:

require_once("Zend/Loader/Autoloader.php"); 
$autoloader = Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true); 

的Zend自動加載機是做include_once(PharData.php)

+0

您可以在這裏看到,自5.3版本以來,PharData包含在php中:http://www.php.net/manual/en/phar.installation.php – benjisail

回答

3

僅僅因爲Phar在PHP 5.3中被默認捆綁,並不意味着它必然包含在您的安裝中。當您使用./configure構建PHP時,可以通過--disable-phar禁用Phar擴展。

爲了證實這一點,運行以下腳本:

<?php 
    phpinfo(); 
?> 

一個出現將是Configure Command部分第一部分。查看本節以查看--disable-phar開關是否存在,以及一般頁面是否有Phar部分。

如果它不存在,您需要聯繫您的主機啓用它。但是,有一個很好的機會,他們不會爲你做,因爲它可能會影響其他用戶,這取決於他們的服務器設置。如果這是在你自己的機器上,你需要重建PHP而不用這個開關,或者從PECL手動安裝Phar(不知道這是否仍然可以在5.3中工作,但我不明白爲什麼它不會)。

+0

謝謝!我剛剛在php info的Configure Command部分找到了--disable-phar。 – benjisail

+0

太棒了。希望這可以幫助你修復它。 – AgentConundrum