找不到“PharData”类

时间:2011-10-21 08:44:03

标签: php zend-framework fatal-error phar

我的生产服务器(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)

1 个答案:

答案 0 :(得分:3)

仅仅因为Phar默认捆绑在PHP 5.3中并不意味着它必然包含在您的安装中。使用./configure构建PHP时,可以传递--disable-phar以禁用Phar扩展。

要确认这一点,请运行以下脚本:

<?php
  phpinfo();
?>

首先出现的部分之一是Configure Command部分。查看此部分,了解--disable-phar切换是否存在,以及页面是否有Phar部分。

如果它不存在,您需要与您的主机联系以启用它。然而,有一个很好的机会,他们不会为你做这件事,因为它可能会影响其他用户,具体取决于他们的服务器设置方式。如果这是在你自己的机器上,你需要在没有那个开关的情况下重建PHP,或者从PECL手动安装Phar(不知道这是否仍然适用于5.3,但我不明白为什么它不会)。