Вызов функции undefined: simplexml_load_string()
Я использую функцию count facebook, используя cron файл. В которой 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("[email protected]","hi".$fb_like_count,$message);
}
Но я получаю undefined ошибку функции вызова.
Ответы
Ответ 1
Для PHP 7 и Ubuntu 14.04 следующая процедура. Поскольку PHP 7 не находится в официальных Ubuntu PPA, вы, вероятно, установили его через 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
Если вы находитесь в более поздней версии Ubuntu, где включен PHP 7, процедура, скорее всего, будет такой же (кроме добавления стороннего репозитория).
Ответ 2
Если модуль XML не установлен, установите его.
Текущая версия 5.6 на ubuntu 14.04:
sudo apt-get install php5.6-xml
Ответ 3
Я думаю, что это может быть что-то вроде этого сообщения:
Класс 'SimpleXMLElement' не найден на puphpet PHP 5.6
Возможно, вы можете установить/активировать
php-xml or php-simplexml
Не забудьте активировать библиотеки в файле php.ini. (например, верхний комментарий)
Ответ 4
Убедитесь, что модуль 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()
для извлечения данных в script:
$result = json_decode($content, true);
$fb_like_count = $result['like_count'];
Ответ 5
Чтобы исправить эту ошибку на Centos 7:
-
Установите расширение PHP:
sudo yum установить php-xml
-
Перезагрузите ваш веб-сервер. В моем случае это php-fpm:
перезапуск сервисов php-fpm