Magento PHP 5.4 PDF发票Zend错误

Magento PHP 5.4 PDF发票Zend错误,php,magento,zend-framework,magento-1.7,Php,Magento,Zend Framework,Magento 1.7,当我试图创建PDF发票时,Magento抛出了一个PHP错误(因为我的客户端运行的是PHP5.4.19) 致命错误:第41行的/var/www/vhosts/website/httpdocs/includes/src/Zend\u Pdf\u FileParserDataSource.php中的Zend\u Pdf\u FileParserDataSource::\u construct()声明必须与Zend\u Pdf\u FileParserDataSource\u文件中的Zend\u co

当我试图创建PDF发票时,Magento抛出了一个PHP错误(因为我的客户端运行的是PHP5.4.19)

致命错误:第41行的/var/www/vhosts/website/httpdocs/includes/src/Zend\u Pdf\u FileParserDataSource.php中的Zend\u Pdf\u FileParserDataSource::\u construct()声明必须与Zend\u Pdf\u FileParserDataSource\u文件中的Zend\u construct()兼容

通常,通过编辑FileParserDataSource.php并注释出两行代码可以很容易地解决这个问题,问题是它们运行一个Zend_Pdf_FileParserDataSource_File.php来扩展这个脚本()

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

这是zend核心问题。在
lib/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();`

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

通过更改函数lib/Zend/Pdf/FileParserDataSource.php修复了此问题

改变

abstract public function __construct();


有时可以通过重新编译编译器或禁用编译器来解决此问题。
进入系统>工具>编译页面,点击
运行编译过程
按钮或
禁用
按钮。
现在检查打印发票。

您必须更改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)

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

这是不可能的,因为有第二个文件。@Hidde,第二个文件的意思是?如果我注释掉函数_construct();和函数_destruct();在lib/Zend/Pdf/FileParseDataSource.php中没有任何更改,因为FileParseDataSource.php由Zend_Pdf_FileParserDataSource_File.php扩展。如果我还注释掉该文件中的代码,我会得到一个“包含2个抽象方法,因此必须声明为抽象或实现其余的方法”错误。@Hidde,您在注释这些函数后是否尝试过?因为我已经为我的项目修复了相同的问题。我尝试过,是的。如果我注释掉文件1中的_构造和_析构函数,那么错误就会出现在文件2中。如果我注释掉文件2中的_构造和_析构函数,错误就会出现在文件1中。如果我在这两个文件中都注释掉,我会得到我之前注释中提到的错误。效果很好!谢谢。谢谢,但这需要编辑核心文件,我讨厌这样做。我一定会将此报告给Magento核心团队。谢谢你们提供的信息。嘿,伙计们,当我打开lib/Zend/Pdf/FileParserDataSource.php时,我没有看到抽象的公共函数\uuu construct();我只有抽象的公共函数uu destruct();评论它并不能解决问题。我也尝试过编译和禁用编译,但这也不能解决问题。是否有其他方法可以解决发票打印问题?感谢您提供的快速解决方案
运行编译过程
在我运行PHP5.4修补程序后完成了这项工作。
             public function __construct($filePath)