【问题标题】:PHP 7 simpleXMLPHP 7 简单XML
【发布时间】:2016-06-06 05:36:05
【问题描述】:

我正在测试 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

【问题讨论】:

  • 从您的phpinfo() 页面的屏幕截图中,看起来 SimpleXML 仅在“模块作者”部分中。这只是告诉你是谁写的;这并不意味着它已安装或加载。事实上,如果这是它出现在 phpinfo() 中的唯一位置,我怀疑这意味着它没有安装。
  • $ php -i | grep simplexml
  • 尝试重启 php-fpm。 sudo systemctl restart php-fpm
  • 你能在stackoverflow.com/questions/49447168/…试试我的回答吗

标签: php simplexml php-7


【解决方案1】:

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

【讨论】:

  • @Mike——谢谢,这是真的——但是,默认情况下应该启用该模块。据我所知,我需要重新编译 PHP 才能启用该模块,因为您无法在 php.ini 中启用它。
【解决方案2】:

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

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

【讨论】:

  • @Alexandre Wohoo 让 OwnCloud 再次使用它,完美!
  • Ubuntu 16.04:sudo apt-get install php-xml
  • 看来问题也出现在 Ubuntu Server 16.04 中。全新安装后,我遇到了问题。 “PHP 致命错误:未捕获的错误:调用未定义的函数 xml_parser_create()”正在输出到 PHP 错误日志。安装 Alexandre 推荐的软件包修复了它。
  • 该软件包不再可用。有人知道哪里还有其他来源吗?
  • @MarkOdey 我没有找到 404,但后来尝试了 Flatron 下面的解决方案,它起作用了。尝试“apt update”
【解决方案3】:

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

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 已经快两年了,它的工作就像魅力一样)

【讨论】:

  • 我正在运行 PHP 7.1,所以我将 7.0 的引用更改为 7.1,重新启动后它工作了。
【解决方案4】:

适用于 Ubuntu 14.04

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

sudo apt-get install php-xml

为我工作。

【讨论】:

    【解决方案5】:

    ------------------在centos中--------------

    找出哪个包提供了php-xml:

     yum provides php-xml
    

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

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

    【讨论】:

    • 这是一个很好的答案,因为yum provides 命令将帮助用户为已安装的任何 PHP 版本找到正确的包。 yum install 命令中不必使用完整的包名。
    【解决方案6】:

    我在 Windows (Ubuntu 16.04) 上使用 Bash,我刚刚安装了 php7.0-xml,现在一切都可以满足 Symfony 3.2.7 PHP 要求。

    sudo apt-get install php7.0-xml
    

    【讨论】:

      【解决方案7】:

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

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

      【讨论】:

      • 谢谢,今天这对我有用!可以确认这适用于 Alpine Linux 3.6.2(Linux 内核 4.4.0-96-generic x86_64)
      • 确保在 Alpine 容器上安装软件包后,您应该运行 docker restart &lt;container_name&gt; 以使这些更改生效,这一点很重要。
      • 对我没用...在 docker 中使用 alpine3.7...获取 php7-simplexml(缺失):要求:world[php7-simplexml]
      • @ronit 试试apk add --no-cache php7-simplexml。如果您没有先运行 apk update,则需要 --no-cache 标志。
      【解决方案8】:

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

      sudo yum install php-xml
      

      【讨论】:

        【解决方案9】:

        因为谷歌把我带到了这里,所以在 Ubuntu 20.04 上这在 2020 年有效:

        sudo apt install php7.4-xml
        

        如果在 Apache2 上,记得重启(可能没必要):

        sudo systemctl restart apache2
        

        【讨论】:

        • 谢谢!这在 NGINX 上对我有用!只需要做:sudo apt install php7.3-xml(7.3 是我的 php 版本)然后重新启动服务:sudo service nginx restart
        【解决方案10】:

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

            sudo apt-get install php7.3-xml
        

        这将安装所需的 simplexml

        【讨论】:

          【解决方案11】:

          我的经历

          1. 获取你的 php 版本

            php --version

          2. 为您的 php 版本安装包

            sudo apt-get install php7.4-xml

          3. 重启apache

            sudo systemctl reload apache2

          【讨论】:

            【解决方案12】:
            1. 使用 php -v //PHP 8.0.1

            2. 在这里查看最新版本的simple xml

            https://pkgs.org/download/php-simplexml

            1. 我的是版本 8 所以
            sudo apt-get install php8.0-xml
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-05
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多