【问题标题】:PHP: Call to undefined function: simplexml_load_string()PHP:调用未定义函数:simplexml_load_string()
【发布时间】:2015-09-21 06:12:36
【问题描述】:

我正在使用 cron 文件实现 facebook 计数功能。其中 cron 每 10 分钟运行一次,并计算一个页面的总点赞数。

for($i=0;$i<3;$i++){
    $source_url =$cars[$i];
    $rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url);
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL,$rest_url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($curl);
    curl_close($curl);
    $message=stripslashes($content);
    $xml_record = simplexml_load_string($message);
    $fb_like_count = $xml_record->link_stat->like_count;
    echo "".$fb_like_count;
    mail("abc@gmail.com","hi".$fb_like_count,$message);
}

但我收到未定义的调用函数错误。

【问题讨论】:

  • 您是否安装并启用了php-xml 模块?

标签: php xml function curl


【解决方案1】:

对于 Nginx(没有 apache)和 PHP 7.2,安装 php7.2-xml 是不够的。必须安装 php7.2-simplexml 包才能使其工作

所以 debian/ubuntu 的命令,更新包并安装两个包

apt update
apt install php7.2-xml php7.2-simplexml

然后重启 Nginx 和 php

systemctl restart nginx php7.2-fpm

【讨论】:

    【解决方案2】:

    如果没有安装 XML 模块,请安装它。

    ubuntu 14.04 上的当前版本 5.6:

    sudo apt-get install php5.6-xml
    

    并且不要忘记在它之后运行 sudo service apache2 restart 命令

    祖尔希米再努迪

    【讨论】:

    • 您只需执行“sudo apt install php-xml”,它就会为您获取正确的版本。
    • 别忘了在它之后运行sudo service apache2 restart 命令
    【解决方案3】:

    我也遇到过这个问题。我的操作系统是 Ubuntu 18.04,我的 PHP 版本是 PHP 7.2

    我是这样解决的:

    在您的 Ubuntu 服务器上安装 Simplexml:

    sudo apt-get install php7.2-simplexml
    

    重启 Apache 服务器

    sudo systemctl restart apache2
    

    就是这样。

    我希望这会有所帮助

    【讨论】:

      【解决方案4】:

      对于 PHP 7 和 Ubuntu 14.04,过程如下。由于 PHP 7 不在官方 Ubuntu PPA 中,您可能通过 Ondřej Surý 的 PPA (sudo add-apt-repository ppa:ondrej/php) 安装了它。转到 /etc/php/7.0/fpm 并编辑 php.ini,取消注释以下行:

      extension=php_xmlrpc.dll
      

      然后简单安装php7.0-xml:

      sudo apt-get install php7.0-xml
      

      然后重启 PHP:

      sudo service php7.0-fpm restart
      

      然后重启 Apache:

      sudo service apache2 restart
      

      如果您使用的是包含 PHP 7 的更高版本的 Ubuntu,则该过程很可能也是相同的(添加任何第三方存储库除外)。

      【讨论】:

      • 仅供参考,您无需在 Ubuntu 上取消注释 extension=php_xmlrpc.dll,因为这是 Windows 扩展,只需执行第二步即可
      • 我也遵循同样的方法:我仍然在第 510 行的 /var/www/html/magento1901/lib/Varien/Simplexml/Config.php 中调用未定义函数 simplexml_load_string()
      • 我收到了一个无法识别的服务错误。我刚刚重新启动了 apache2,这解决了这个问题。感谢您的帮助,在 PHP.ini 中找到这一行
      • 是的,这行得通,我可以跳过@wmfrancia 所说的第一步。
      • 我尝试了同样的方法,但对我不起作用。来自错误日志未捕获的错误:调用 /var/www/html/lib/Varien/Simplexml/Config.php 中的未定义函数 simplexml_load_string()
      【解决方案5】:

      Centos 7 上修复这个错误:

      1. 安装 PHP 扩展:

        sudo yum install php-xml

      2. 重新启动您的网络服务器。就我而言,它是 php-fpm:

        服务 php-fpm 重启

      【讨论】:

        【解决方案6】:

        我认为它可能类似于这篇文章: Class 'SimpleXMLElement' not found on puphpet PHP 5.6 所以也许你可以安装/激活

        php-xml or php-simplexml
        

        不要忘记激活 php.ini 文件中的库。 (顶comment

        【讨论】:

        • 也试试这个link
        【解决方案7】:

        确保您在php.ini 中安装并启用了php-xml 模块。

        您还可以将响应格式更改为更易于处理的 json。在这种情况下,您只需将 &amp;format=json 添加到 url 查询字符串。

        $rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=".urlencode($source_url);
        

        然后使用json_decode() 检索脚本中的数据:

        $result = json_decode($content, true);
        $fb_like_count = $result['like_count'];
        

        【讨论】:

        • 我已经修改了我的终端 php 版本然后它工作正常
        猜你喜欢
        • 2017-07-20
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-05
        • 2013-05-19
        • 2012-04-05
        • 2014-09-02
        相关资源
        最近更新 更多