我完全明白,网上有很多线程关于这个问题,但我似乎并没有让它工作,因为很多线程与我遇到的问题不匹配。
我正在集成一些自定义代码(由随机人员编写)。当我运行它时,我明白了:
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
答案 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.net
和vendor
个文件夹。问题没有再出现,圆形立方体似乎工作正常。
答案 3 :(得分:0)
当您在源代码中尝试set_include_path
两次时,会出现此问题。在包含的路径中,可用的PEAR(当然,它也是重合的)。
解决方法:检查源代码中包含的路径和php.ini
get_include_path
功能。