9

当我尝试创建 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

4 回答 4

37

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

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

改变

abstract public function __construct();

abstract public function __construct($filePath);
于 2013-10-23T09:46:54.727 回答
6

这是 zend 核心问题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();`
于 2013-10-22T12:49:42.867 回答
2

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

于 2014-05-23T04:05:14.983 回答
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)

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

于 2016-08-24T06:02:51.407 回答