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

ani*_*nil 75 php xml curl function

我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)

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

And*_*röm 144

对于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
Run Code Online (Sandbox Code Playgroud)

然后只需安装php7.0-xml:

sudo apt-get install php7.0-xml
Run Code Online (Sandbox Code Playgroud)

并重启PHP:

sudo service php7.0-fpm restart
Run Code Online (Sandbox Code Playgroud)

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

  • 只是fyi你不需要在Ubuntu上取消注释extension = php_xmlrpc.dll,因为这是一个Windows扩展只是做第二步它会工作 (11认同)

Fab*_*idt 43

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

ubuntu 14.04上的当前版本5.6:

sudo apt-get install php5.6-xml
Run Code Online (Sandbox Code Playgroud)

  • 你可以做"sudo apt install php-xml",它会为你得到正确的版本. (2认同)

Pro*_*ton 10

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

我是这样解决的:

在 Ubuntu 服务器上安装 Simplexml:

sudo apt-get install php7.2-simplexml
Run Code Online (Sandbox Code Playgroud)

重新启动 Apache 服务器

sudo systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)

就这样。

我希望这有帮助


mar*_*an0 7

确保在 .php 中安装并启用了 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);
Run Code Online (Sandbox Code Playgroud)

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

$result = json_decode($content, true);
$fb_like_count = $result['like_count'];
Run Code Online (Sandbox Code Playgroud)


Aja*_*ngh 6

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

因此,debian/ubuntu 的命令是更新软件包并安装这两个软件包

apt update
apt install php7.2-xml php7.2-simplexml
Run Code Online (Sandbox Code Playgroud)

并重新启动 Nginx 和 php

systemctl restart nginx php7.2-fpm
Run Code Online (Sandbox Code Playgroud)


Bjö*_*ter 5

我认为这可能类似于以下文章: 在puphpet PHP 5.6上找不到类'SimpleXMLElement', 所以也许您可以安装/激活

php-xml or php-simplexml
Run Code Online (Sandbox Code Playgroud)

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