【问题标题】:Call to undefined function utf8_decode调用未定义函数 utf8_decode
【发布时间】:2018-03-13 21:35:45
【问题描述】:

我查看了关于此错误的其他 SO 答案 herehereFastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function 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

【问题讨论】:

  • 安装后记得重启apache2。我建议重新启动服务器,因为我必须为同样的问题这样做。

标签: php php-7


【解决方案1】:

寻找我在php中安装的模块

php -m | grep -i xml

在我运行这个命令之后

yum --enablerepo remi install php-xml

然后重启 apache

sudo service httpd restart

【讨论】:

    【解决方案2】:

    运行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
    

    【讨论】:

      【解决方案3】:

      好的,所以我想通了。这与 /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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-24
        • 2016-10-11
        • 2018-01-31
        • 2013-09-11
        • 2013-01-26
        相关资源
        最近更新 更多