我的生产服务器(CentOS 5.4和php 5.3.5)出现此错误:
警告:include_once(PharData.php):无法打开流:没有这样的 /var/www/ZendFramework/library/Zend/Loader.php上的文件或目录 第146行
警告:include_once():无法打开'PharData.php'以包含它 (include_path中= '/无功/网络/ FW:/无功/网络/ VMMS:/无功/网络/ ZendFw /库::在/ usr /共享/梨:在/ usr /共享/ PHP') 在第146行的/var/www/ZendFw/library/Zend/Loader.php
致命错误:未找到“PharData”类 第40行/var/www/vm/app/Backup.php
这是失败的代码:
$phar = new PharData($imageBackupFile);
$phar->buildFromDirectory($imageDir);
Logger::info("Image directory backed up to: $imageBackupFile");
此代码在我自己的计算机上正常运行。
默认情况下,PhadData应包含在php 5.3+ ...
中感谢您的帮助!
更新:
我使用Zend Auto loader功能使用以下代码加载好的php文件:
require_once("Zend/Loader/Autoloader.php");
$autoloader = Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
Zend自动加载器正在执行include_once(PharData.php)
。
答案 0 :(得分:3)
仅仅因为Phar默认捆绑在PHP 5.3中并不意味着它必然包含在您的安装中。使用./configure
构建PHP时,可以传递--disable-phar
以禁用Phar扩展。
要确认这一点,请运行以下脚本:
<?php
phpinfo();
?>
首先出现的部分之一是Configure Command
部分。查看此部分,了解--disable-phar
切换是否存在,以及页面是否有Phar
部分。
如果它不存在,您需要与您的主机联系以启用它。然而,有一个很好的机会,他们不会为你做这件事,因为它可能会影响其他用户,具体取决于他们的服务器设置方式。如果这是在你自己的机器上,你需要在没有那个开关的情况下重建PHP,或者从PECL手动安装Phar(不知道这是否仍然适用于5.3,但我不明白为什么它不会)。