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

时间:2015-07-03 11:51:41

标签: php xml function curl

我正在使用cron文件实现facebook count功能。其中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);
}

但是我正在调整未定义的调用函数错误。

7 个答案:

答案 0 :(得分:134)

对于PHP 7和Ubuntu 14.04,程序如下。由于PHP 7不在官方Ubuntu PPA中,您可能通过OndřejSurý的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

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

答案 1 :(得分:39)

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

ubuntu 14.04上的当前版本5.6:

sudo apt-get install php5.6-xml

答案 2 :(得分:8)

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

这是我的解决方法:

在Ubuntu服务器上安装Simplexml:

sudo apt-get install php7.2-simplexml

重新启动Apache服务器

sudo systemctl restart apache2

仅此而已。

我希望这会有所帮助

答案 3 :(得分:4)

我认为它可能像这篇文章中的内容: Class 'SimpleXMLElement' not found on puphpet PHP 5.6 所以也许你可以安装/激活

php-xml or php-simplexml

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

答案 4 :(得分:2)

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

您还可以将响应格式更改为更容易处理的json。在这种情况下,您只需要将&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'];

答案 5 :(得分:0)

要在 Centos 7 上修复此错误:

  1. 安装PHP扩展名:

    sudo yum install php-xml

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

    服务php-fpm重新启动

答案 6 :(得分:0)

对于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