我正在尝试安装使用PHPSpreadSheet库的PHP应用程序。
Web服务器是Nginx;操作系统是Debian 9.5,当前的PHP-FPM版本是7.0。
在尝试使用PHPSpreadsheet库时,我面临如下错误
错误:找不到类“ XMLWriter”
文件/var/www/XXXX/vendor/cakephp/cakephp/src/PhpOffice/PhpSpreadsheet/Shared/XMLWriter.php
第5行
深入研究库本身,我看到该类正在尝试从\ XMlWriter继承-这是一个描述为PHPSpreadsheet正常运行所必需的模块-直到现在我还好。
<?php
namespace Cake\PhpOffice\PhpSpreadsheet\Shared;
class XMLWriter extends \XMLWriter
{
...
问题是我已经在Debian上安装了php7.0-xml(也为Nginx所困扰),但是似乎XMLWriter仍未安装,因此产生了致命错误...
请参阅以下apt的输出
apt-get install php7.0-xml
Reading package lists... Done
Building dependency tree
Reading state information... Done
php7.0-xml is already the newest version (7.0.30-0+deb9u1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
此外,在我的phpinfo文件中,除了显示的作者姓名之外,我找不到对XMLWriter的任何其他引用。绝对未启用此模块!
要在PHP环境中真正启用此模块,还需要执行其他步骤吗?
编辑:
我还必须安装php7.0-gd和php7.0-zip;对于这2个模块,我分别运行了apt-get install php7.0-gd php7.0-zip
和service php7.0-fpm restart
,以查看它们在我的phpinfo()中处于活动状态
这些模块的一切似乎都很正常,因为我可以在/etc/php/7.0/fpm/mods-available中看到ini文件
ls /etc/php/7.0/mods-available/ -al
total 28
drwxr-xr-x 2 root root 4096 Oct 5 23:04 .
drwxr-xr-x 4 root root 4096 Sep 24 13:09 ..
-rw-r--r-- 1 root root 64 Jun 14 15:50 gd.ini
-rw-r--r-- 1 root root 71 Jun 14 15:50 mysqli.ini
-rw-r--r-- 1 root root 72 Jun 14 15:50 mysqlnd.ini
-rw-r--r-- 1 root root 74 Jun 14 15:50 pdo_mysql.ini
-rw-r--r-- 1 root root 66 Jun 14 15:50 zip.ini
在那里,对于xml或xmlwriter的任何操作,我都遵循完全相同的命令。
我可以在与gd.so或zip.so相同的位置找到xml.so,但是暂时无法启用此扩展!
find / -name xml.so
/usr/lib/php/20151012/xml.so
find / -name gd.so
/usr/lib/php/20151012/gd.so
此致
答案 0 :(得分:0)
好,我终于得到了这个。
我刚跑
apt-get purge php7.0-xml && apt-get install php7.0-xml
在重新启动PHP以查看XML模块(Reader,Writer和其他模块)之前。
我不知道发生了什么,但至少我已经完成了。
此致
答案 1 :(得分:0)
在Ubuntu 18.04上以root用户身份
apt install php-xmlwriter
或使用sudo:
sudo apt install php-xmlwriter