PHP 7 simpleXML


71

我正在测试PHP7,最近更新后出现了一个奇怪的问题。默认情况下应启用SimpleXML,并且我的phpinfo页面显示它可用:

在此处输入图片说明

但是,这些功能不可用:

<?php

if (function_exists('simplexml_load_file')) {
    echo "simpleXML functions are available.<br />\n";
} else {
    echo "simpleXML functions are not available.<br />\n";
}

// result-- NOT available

并且该模块未列出为已加载:

~ $ php -m
[PHP Modules]
calendar
Core
ctype
curl
...
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib

有人知道这是否有解决方法吗?

版本信息:

~ $ php -v
PHP 7.0.3-8+deb.sury.org~trusty+2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

4
phpinfo()页面的屏幕截图来看,SimpleXML似乎仅位于“模块作者”部分。只是告诉你是谁写的;这并不意味着它已安装或加载。实际上,如果这是它出现在中的唯一位置phpinfo(),我怀疑这表示它尚未安装。
布伦丹·怀特

$ php -i | grep simplexml
Ravshan Abdulaev

5
尝试重新启动php-fpm。sudo systemctl重新启动php-fpm
phpd

Answers:


93

我遇到了同样的问题,我正在使用Ubuntu 15.10。

就我而言,为了解决此问题,我使用Synaptic软件包管理器(其中包括SimpleXml)安装了软件包php7.0-xml。因此,重新启动我的Apache服务器后,我的问题解决了。这个软件包是Debian版本的,您可以在这里找到它:https : //packages.debian.org/sid/php7.0-xml


1
@Alexandre Wohoo让OwnCloud再次使用它,完美!
Flatron

36
Ubuntu 16.04:sudo apt-get install php-xml
Sasha MaximAL '16

2
看来在Ubuntu Server 16.04中也存在此问题。全新安装后,我遇到了这个问题。“ PHP致命错误:未捕获错误:调用未定义函数xml_parser_create()”已输出到PHP错误日志。安装Alexandre建议的软件包,将其修复。
MikeyE

该软件包不再可用。有人知道哪里还有其他来源吗?
Mark Odey '19

@MarkOdey我没有找到404,但是随后尝试了以下Flatron的解决方案,并且有效。尝试“ apt更新”
Martin

67

对于使用Ubuntu和ppa:ondrej/phpPPA的所有用户,这将解决问题:

apt install php7.0-mbstring php7.0-zip php7.0-xml

(请参阅https://launchpad.net/~ondrej/+archive/ubuntu/php

感谢@Alexandre Barbosa指出了这一点!

编辑20160423:

一线解决此问题:

sudo add-apt-repository -y ppa:ondrej/php && sudo apt update && sudo apt install -y php7.0-mbstring php7.0-zip php7.0-xml

(这将添加上面提到的ppa,并且还将确保您始终拥有最新的php。我们使用Ondřej的PHP ppa已有近两年的时间了,它的工作原理很吸引人)


1
我正在运行PHP 7.1,因此我将7.0的引用更改为7.1,并且在重新启动后可以正常工作。
Mark Hewitt '18

22

对于Ubuntu 14.04 with

PHP 7.0.13-1 + deb.sury.org〜trusty + 1(cli)(NTS)

sudo apt-get install php-xml

为我工作。


15

对于Alpine(在docker中),您可以使用apk add php7-simplexml

如果那对您不起作用,则可以运行apk add --no-cache php7-simplexml。这是为了防止您不先更新软件包索引。


谢谢,今天对我有用!可以确认在Alpine Linux 3.6.2(Linux内核4.4.0-96-通用x86_64)上可以正常工作
eluong

1
重要的是要确保在将软件包安装到Alpine容器上之后,应该运行docker restart <container_name>以使这些更改生效。
cudacoder

没为我工作...在docker中使用alpine3.7 ...获取php7-simplexml(丢失):要求:world [php7-simplexml]
ronit

1
@ronit试试apk add --no-cache php7-simplexml--no-cache如果您不apk update先运行,则需要该标志。
brismuth

12

我正在Windows(Ubuntu 16.04)上使用Bash,并且刚刚安装了php7.0-xml,现在所有这些都可以满足Symfony 3.2.7 PHP的要求。

sudo apt-get install php7.0-xml

10

------------------以centos -------------------------

找出哪个包提供php-xml:

 yum provides php-xml

然后从输出列表中选择合适的一个,安装

yum install php70u-xml-7.0.14-2.ius.centos7.x86_64

1
这是一个很好的答案,因为该yum provides命令将帮助用户找到已安装的任何版本的PHP的正确软件包。不需要在yum install命令中使用完整的软件包名称。
Craig Finch

7

由于Google带领我来到这里,因此在Ubuntu 20.04上可以在2020年实现:

sudo apt install php7.4-xml

如果在Apache2上,请记住重新启动(可能没有必要):

sudo systemctl restart apache2

谢谢!这为我在NGINX上工作!只需要做:sudo apt安装php7.3-xml(7.3是我的PHP版本),然后重新启动服务:sudo服务nginx重新启动
Alejo_Blue

4

在AWS Linux 2上有相同的问题,phpinfo()显示已安装SimpleXML,但无法正常工作,在cmd下解决了我的问题

sudo yum install php-xml

3

通常,在Debian系统上,对于CLI和用于运行Apache模块的PHP具有不同的PHP配置。您的phpinfo页面很可能显示simplexml已通过Web服务器启用,而未通过CLI启用。


@Mike-谢谢,是的,但默认情况下,应启用该模块。据我所知,我需要重新编译PHP以启用该模块,因为您无法在php.ini中启用它。
user101289 '02

0

对于Ubuntu 18.04和php7.3,安装php7.3-xml sudo apt-get安装php7.3-xml

这将安装所需的simplexml


0

我的经验

  1. 得到你的PHP版本

    php --version

  2. 您的php版本的安装软件包

    须藤apt-get install php7.4-xml

  3. 重新启动Apache

    sudo systemctl重新加载apache2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.