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


85

我正在使用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);
}

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


6
您是否已php-xml安装并启用了模块?
marian0 2015年

Answers:


154

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

并重新启动Apache:

sudo service apache2 restart

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


14
就这样,您不需要在Ubuntu上取消注释extension = php_xmlrpc.dll,因为这是Windows扩展,只需执行第二步,它将起作用
wmfrancia 16-10-11

我遵循相同的方法:仍然在第510行/var/www/html/magento1901/lib/Varien/Simplexml/Config.php中的第510行上调用未定义函数simplexml_load_string()
Sushivam,2016年

1
我收到了无法识别的服务错误。我刚刚重新启动了apache2,这解决了这个问题。感谢帮助,在PHP.ini中找到此行
编码容器

是的,这行得通,而且如@wmfrancia所述,我能够跳过第一步。
Linnea Huxford

我尝试了同样的方法,但是对我没有用。从错误日志中捕获未捕获的错误:调用/var/www/html/lib/Varien/Simplexml/Config.php中的未定义函数simplexml_load_string()
Killer

51

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

Ubuntu 14.04上的当前版本5.6:

sudo apt-get install php5.6-xml

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

祖尔米(Zulhilmi Zainudi)


4
您只需执行“ sudo apt install php-xml”,它将为您获取正确的版本。
娜奥米

1
并且不要忘记在sudo service apache2 restart其后执行命令
Zulhilmi Zainudin

8

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

这是我解决的方法:

在Ubuntu服务器上安装Simplexml:

sudo apt-get install php7.2-simplexml

重新启动Apache服务器

sudo systemctl restart apache2

就这样。

我希望这有帮助



5

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

您还可以将响应格式更改为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'];

我修改了我的终端php版本,然后工作正常
anil

1

要在Centos 7上修复此错误:

  1. 安装PHP扩展:

    须藤百胜安装php-xml

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

    服务php-fpm重新启动


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
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.