无法重新声明_PEAR_call_destructors()

时间:2014-04-29 13:51:26

标签: php apache

我完全明白,网上有很多线程关于这个问题,但我似乎并没有让它工作,因为很多线程与我遇到的问题不匹配。

我正在集成一些自定义代码(由随机人员编写)。当我运行它时,我明白了:

  

PHP致命错误:无法在第777行的/usr/share/php/PEAR.php中重新声明_PEAR_call_destructors()(之前在/var/www/my_project/classes/_externals/PEAR.php:773中声明)

我理解这个问题 - 代码包含自己的PEAR.php代码(?)代码,但之前的另一个代码来自系统。

所以它给我一个错误。我怎么能解决这个问题?是否有可能告诉PHP不断定义和功能?我认为那样做会。

我正在使用PHP 5.3.10-1ubuntu3.11

运行Suhosin-Patch (cli) Apache Apache/2.2.22

4 个答案:

答案 0 :(得分:0)

我认为您需要在代码中使用ini_set()定义自己的包含路径。 我还没有面对这种情况。我找到了这个链接:

http://forums.uber.com.au/showthread.php?1851-PEAR-Fatal-error-Cannot-redeclare

希望这有帮助。

答案 1 :(得分:0)

当我将网站从prestashop 1.3升级到prestashop 1.6时,我也遇到了类似的问题。

我通过删除modules文件夹中的所有模块来修复它,然后从新下载的prestashop_x.zip模块文件夹中复制文件。

这意味着一些模块会产生问题。我没有深入检查。但它可能会提供一种分析问题的方法。

感谢。

答案 2 :(得分:0)

安装新的圆形立方体时出错了。问题很可能是圆形立方体带有自己的PEAR版本,与我的debian打包版本相冲突。当我尝试发送电子邮件时,此表现出来,但此时,它出现在系统日志中。

我从圆形多维数据集安装中的pear文件夹中删除了pear-pear.php.netvendor个文件夹。问题没有再出现,圆形立方体似乎工作正常。

答案 3 :(得分:0)

当您在源代码中尝试set_include_path两次时,会出现此问题。在包含的路径中,可用的PEAR(当然,它也是重合的)。

解决方法:检查源代码中包含的路径和php.ini get_include_path功能。

相关问题