调用未定义的函数 simplexml_load_file()

Posted

技术标签:

【中文标题】调用未定义的函数 simplexml_load_file()【英文标题】:Call to undefined function simplexml_load_file() 【发布时间】:2018-09-01 23:36:05 【问题描述】:

我的 ubuntu 服务器上运行着 php 7.0。

php -m 命令说:

[PHP 模块] 日历 核 类型 卷曲 日期 dom exif 文件信息 筛选 ftp gd 获取文本 哈希 图标v 国际 json libxml mbstring mcrypt mysqli mysqlnd openssl pcntl 聚合酶链反应 PDO pdo_mysql 法尔 正则表达式 阅读线 反射 会议 shmop 简单XML 插座 声压级 标准 系统虚拟机 系统 系统 分词器 wddx xml xml阅读器 xmlwriter xsl Zend OPcache 压缩 zlib

但是当我运行我的网站时,它的日志仍然显示“PHP 致命错误:

【问题讨论】:

命令行中使用的 PHP 配置不一定与运行网站时使用的相同。在网页上尝试phpinfo(),或检查您的主机配置,以确定在该环境中加载了哪些模块。 使用 phpinfo() 检查时未加载 Simplexml。但是我尝试通过命令 php a2enmod simplexml 启用 simplexml,但它仍然没有启用。该命令不会给出错误。一些网站说重启/opt/php 7.0-fpm..但是文件丢失了。 你找到解决办法了吗? 【参考方案1】:

我有同样的问题。我通过安装php7.2-xml 修复了它:

$ sudo apt-get install php7.2-xml
$ sudo systemctl reload apache2 

之后,SimpleXML 被php -m 列出:

$ php -m | grep -i simple
SimpleXML

【讨论】:

同样,在 CentOS 8 中,我用“yum install php-xml”解决了这个问题 在 Debian 10 上工作。 在 Debian 9 上也为我工作(但 php7.3-xml)。 "sudo apt-get install php7.4-xml" 然后在 Ubuntu 20.04 上使用 "sudo systemctl reload apache2" 谢谢!最好将 reload apache2 部分添加到答案中。【参考方案2】:

我使用的是 ubuntu 18.04。当我在模块列表中检查 SimpleXML 时,它和你的一样。

然后我检查了我的 phpinfo(),它说它是从不同的 php 版本中提取的,并且与 php cli 不同。

要检查 php cli 版本,我运行 php -v

为了检查 phpinfo(),我将该函数放在脚本 index.php 的顶部。

确认我的phpcli版本与phpinfo中的不同后,

我只是运行这 2 个命令

sudo a2dismod php7.0

sudo a2enmod php7.3

然后重启我的apache

sudo systemctl 重启 apache2

之后,我再次测试我的 phpinfo()

现在它正在工作。

【讨论】:

以上是关于调用未定义的函数 simplexml_load_file()的主要内容,如果未能解决你的问题,请参考以下文章

数据流 - 未调用函数 - 错误 - 未定义名称

调用未定义函数 Mpdf\\Mpdf()

Codeigniter:调用未定义的函数(模型)

如果子类未定义构造函数,是不是会调用父构造函数?

phpMyAdmin 错误调用未定义函数

未捕获的错误:调用未定义的函数 have_post()