课程' PhpOffice \ PhpWord \设置'在1348行的app / code / core / Mage / Core / Model / Config.php中找不到

时间:2016-02-19 04:19:02

标签: php magento

升级到PHP 7后,我的网站magento使用PhpWord库无法正常工作。

我有这个错误:

  

不能将PhpOffice \ PhpWord \ Shared \ String用作String,因为' String'是/ home /.../ vendor / phpoffice / phpword / src / PhpWord / Style / Paragraph.php中的特殊类名

然后我使用最新的PhpOffice / PhpWord和PhpOffice / Common,但它显示下一个错误:

  

致命错误:Class' PhpOffice \ PhpWord \ Settings'在1348行的/app/code/core/Mage/Core/Model/Config.php中找不到

你能帮我解决这个错误吗?

2 个答案:

答案 0 :(得分:0)

<强>解决方案:

将文件phpoffice/phpword/src/PhpWord/Shared/String.php重命名为phpoffice/phpword/src/PhpWord/Shared/StringHelper.php。使用对多个文件具有搜索和替换功能的te​​xteditor或findsed等命令shell工具,以便搜索行use PhpOffice\PhpWord\Shared\String;并将每行替换为{{1} }。这意味着在所有PHP文件中的所有位置都必须用use PhpOffice\PhpWord\Shared\StringHelper;替换整个单词String。也搜索StringHelper并将其替换为'StringHelper ::`。

<强>解释

String::似乎由PHP保留,甚至不允许使用命名空间。解决方案:使用班级名称String代替它。

Linux Shell:

StringHelper

这将列出您必须进行替换的所有文件和行号。

答案 1 :(得分:0)

解决方案1: 我在整个phpword库中将String类重命名为Stringg,这也适用于php7和旧版本的php。

解决方案2: 或者可以通过为字符串类提供别名来使用

use PhpOffice\PhpWord\Shared\String as POString;

现在使用如下所述的POString。

public function setText($text)
{
$this->text = POString::toUTF8($text);
return $this;
}

这也可以正常工作