升级到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中找不到
你能帮我解决这个错误吗?
答案 0 :(得分:0)
<强>解决方案:强>
将文件phpoffice/phpword/src/PhpWord/Shared/String.php
重命名为phpoffice/phpword/src/PhpWord/Shared/StringHelper.php
。使用对多个文件具有搜索和替换功能的texteditor或find
或sed
等命令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;
}
这也可以正常工作