PHP:调用未定义函数:simplexml_load_string()

PHP:调用未定义函数:simplexml_load_string(),php,xml,function,curl,Php,Xml,Function,Curl,我正在使用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(); c

我正在使用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);
}
for($i=0;$ilink\u stat->like\u count;
回显“$fb”类计数;
邮件(“abc@gmail.com“,”嗨“$fb\u like\u count,$message);
}

但是我遇到了未定义的调用函数错误。

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

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

$rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=".urlencode($source_url);
然后使用
json\u decode()
检索脚本中的数据:

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

如果未安装XML模块,请安装它

ubuntu 14.04上的当前版本5.6:

sudo apt-get install php5.6-xml
并且不要忘记在它之后运行sudo服务apache2 restart命令


Zulhilmi Zainudi

对于PHP7和Ubuntu 14.04,程序如下。由于PHP7不在官方Ubuntu PPAs中,您可能通过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,则过程很可能与此相同(除了添加任何第三方存储库)。

我认为这可能类似于本文: 因此,也许您可以安装/激活

php-xml or php-simplexml
不要忘记激活php.ini文件中的库(如顶部)

要在Centos 7上修复此错误:

  • 安装PHP扩展:

    sudoyum安装php-xml

  • 重新启动web服务器。在我的例子中,它是php fpm:

    服务php fpm重启


  • 我也面临这个问题,我的操作系统是Ubuntu 18.04,我的PHP版本是PHP 7.2

    我是这样解决的:

    在Ubuntu服务器上安装Simplexml:

    sudo apt-get install php7.2-simplexml
    
    重新启动Apache服务器

    sudo systemctl restart apache2
    
    就这些

    我希望这对Nginx(没有apache)和php7.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
    

    您是否安装并启用了
    php xml
    模块?我已经修改了我的终端php版本,然后它可以正常工作仅供参考您不需要在Ubuntu上取消extension=php\u xmlrpc.dll的注释,因为这是一个windows扩展只需执行第二步,它将按照相同的步骤工作:仍然可以调用未定义的函数simplexml\u load\ng()在第5101行的/var/www/html/magento1901/lib/Varien/Simplexml/Config.php中,我收到了一个无法识别的服务错误。我刚刚重新启动了apache2,解决了这个问题。Thaks在php.ini中找到了这一行,这很有效,并且我能够跳过@wmfrancia所述的第一步。我尝试了同样的方法,但对我无效。从错误日志Uncaught Error:在/var/www/html/lib/Varien/simplexml/Config.phpals中调用未定义的函数simplexml_load_string()。要尝试此操作,您只需执行“sudo-apt-install-php-xml”,它将为您获得正确的版本。并且不要忘记在调用后运行
    sudo-service-apache2 restart
    命令