我查看了有关此错误的其他SO答案here和here:在stderr中发送的FastCGI:“PHP消息:PHP致命错误:未捕获错误:调用未定义函数utf8_decode
两个答案都说安装php-xml会修复错误。但那没用。我运行了sudo apt install php-xml
,它安装了php-xml和php7.0-xml,我重新启动了php-fpm和nginx。但我仍然得到同样的错误。
同时选中function_exists('utf8_decode')
并返回false。因此,当调用utf8_decode时,显然会抛出错误。
服务器是Ubuntu 16.04和PHP 7.0。这是phpinfo输出(PDF):https://drive.google.com/file/d/0B3GpdAvwm4fOaWMwb0JkTFQyb0U/view?usp=sharing
答案 0 :(得分:4)
好的,所以我明白了。这与/etc/php/7.0/mods-available /
中缺少的文件有关通常应该有一个xml.ini文件,但由于我安装,卸载和重新安装PHP的方式,该文件丢失了。那项行动并没有干净利落。从PPA安装PHP后我卸载了它,删除了/ etc / php /中的许多文件(不建议这样做。请改用apt-get purge
)。
很长一段时间,这很有效:
sudo apt-get purge php-xml php7.0-xml
sudo apt-get install php-xml
答案 1 :(得分:1)
运行php -v
以检查 PHP 的版本。
如果你正在运行的版本是 5.6 ,解决方法如下:
sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml
否则,请运行以下命令:
sudo apt-get install php7.2-mbstring php7.2-mcrypt php7.2-mysql php7.2-xml
答案 2 :(得分:0)
寻找我已安装在php中的模块
php -m | grep -i xml
运行此命令后
yum --enablerepo remi install php-xml
并重新启动apache
sudo service httpd restart