PHP: Call to undefined function: simplexml_load_string()
PhpXmlFunctionCurlPhp Problem Overview
I am implementing facebook count function using cron file. In which cron runs every 10 minutes and counts the total likes of a page.
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("[email protected]","hi".$fb_like_count,$message);
}
But I am geting undefined call function error.
Php Solutions
Solution 1 - Php
For PHP 7 and Ubuntu 14.04 the procedure is follows. Since PHP 7 is not in the official Ubuntu PPAs you likely installed it through Ondřej Surý's PPA (sudo add-apt-repository ppa:ondrej/php). Go to /etc/php/7.0/fpm and edit php.ini, uncomment to following line:
extension=php_xmlrpc.dll
Then simply install php7.0-xml:
sudo apt-get install php7.0-xml
And restart PHP:
sudo service php7.0-fpm restart
And restart Apache:
sudo service apache2 restart
If you are on a later Ubuntu version where PHP 7 is included, the procedure is most likely the same as well (except adding any 3rd party repository).
Solution 2 - Php
If the XML module is not installed, install it.
Current version 5.6 on ubuntu 14.04:
sudo apt-get install php5.6-xml
> And don't forget to run sudo service apache2 restart command after it
Zulhilmi Zainudi
Solution 3 - Php
I also faced this issue. My Operating system is Ubuntu 18.04 and my PHP version is PHP 7.2.
Here's how I solved it:
Install Simplexml on your Ubuntu Server:
sudo apt-get install php7.2-simplexml
Restart Apache Server
sudo systemctl restart apache2
That's all.
I hope this helps
Solution 4 - Php
Make sure that you have php-xml module installed and enabled in php.ini
.
You can also change response format to json which is easier to handle. In that case you have to only add &format=json
to url query string.
$rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=".urlencode($source_url);
And then use json_decode()
to retrieve data in your script:
$result = json_decode($content, true);
$fb_like_count = $result['like_count'];
Solution 5 - Php
I think it can be something like in this Post: Class 'SimpleXMLElement' not found on puphpet PHP 5.6 So maybe you could install/activate
php-xml or php-simplexml
Do not forget to activate the libraries in the php.ini file. (like the top comment)
Solution 6 - Php
For Nginx (without apache) and PHP 7.2, installing php7.2-xml wasn't enough. Had to install php7.2-simplexml package to get it to work
So the commands for debian/ubuntu, update packages and install both packages
apt update
apt install php7.2-xml php7.2-simplexml
And restart both Nginx and php
systemctl restart nginx php7.2-fpm
Solution 7 - Php
To fix this error on Centos 7:
-
Install PHP extension:
sudo yum install php-xml
-
Restart your web server. In my case it's php-fpm:
services php-fpm restart