Magento PHP 5.4 PDF发票Zend错误

时间:2013-10-22 11:29:06

标签: php magento zend-framework magento-1.7

当我尝试创建PDF发票时,Magento正在抛出PHP错误(因为我的客户端运行的是PHP 5.4.19)。

  

致命错误:Zend_Pdf_FileParserDataSource_File :: __ construct()的声明必须与第41行/var/www/vhosts/website/httpdocs/includes/src/Zend_Pdf_FileParserDataSource_File.php中的Zend_Pdf_FileParserDataSource :: __ construct()兼容

通常可以通过编辑FileParserDataSource.php并注释掉两行来轻松解决这个问题,问题是他们运行了一个Zend_Pdf_FileParserDataSource_File.php来扩展这个脚本(http://pastebin.com/J64VNsRP)。

是否有可用的解决方案,以便可以在运行PHP 5.4的服务器上使用Magento创建PDF发票?

4 个答案:

答案 0 :(得分:37)

这是PHP版本5.4.4和zend Framwork之间的不兼容问题。

通过更改此函数lib / Zend / Pdf / FileParserDataSource.php来修复它。

变化

abstract public function __construct();

abstract public function __construct($filePath);

答案 1 :(得分:6)

这是核心问题http://framework.zend.com/issues/browse/ZF-12093。通过在__construct

中注释掉__destructlib/Zend/Pdf/FileParserDataSource.php方法来解决此问题
//    abstract public function __construct();

    /**
     * Object destructor. Closes the data source.
     *
     * May also perform cleanup tasks such as deleting temporary files.
     */
//    abstract public function __destruct();`

答案 2 :(得分:2)

有时可以通过重新编译编译器或禁用编译器来解决 转到系统>工具>编辑页面,然后单击Run Compilation Process按钮或Disable按钮 现在检查打印发票 http://kb.magenting.com/content/24/81/en/disable-magento-compiler.html

答案 3 :(得分:1)

您必须更改lib / Zend / Pdf / FileParserDataSource.php和lib / Zend / Pdf / FileParserDataSource / File.php

找到

             abstract public function __construct();
在FileParserDataSource.php中

并将其更改为

             abstract public function __construct($filePath);

并且在File.php中也为

做同样的事情
             public function __construct()

转换为

             public function __construct($filePath)

这对我有用。我希望它有所帮助。