1

我在生产服务器(CentOS 5.4 和 php 5.3.5)上收到此错误:

警告:include_once(PharData.php):无法打开流:第 146 行的 /var/www/ZendFramework/library/Zend/Loader.php 中没有这样的文件或目录

警告:include_once():无法打开“PharData.php”以包含(include_path='/var/www/fw:/var/www/vmms:/var/www/ZendFw/library:.:/usr/share/pear :/usr/share/php') 在 /var/www/ZendFw/library/Zend/Loader.php 第 146 行

致命错误:在第 40 行的 /var/www/vm/app/Backup.php 中找不到类“PharData”

这是失败的代码:

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

这段代码在我自己的电脑上运行良好。

PharData 应该默认包含在 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).

4

1 回答 1

3

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

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

<?php
  phpinfo();
?>

第一个出现的部分将是该Configure Command部分。查看此部分以查看--disable-phar开关是否存在,以及页面是否有一个Phar部分。

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

于 2011-10-21T09:27:37.480 回答