当我尝试创建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发票?
答案 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
__destruct
和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();`
答案 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)
这对我有用。我希望它有所帮助。