PHP: вызов неопределенной функции: simplexml_load_string ()

86

Я реализую функцию подсчета 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("abc@gmail.com","hi".$fb_like_count,$message);
}

Но я получаю неопределенную ошибку функции вызова.

анил
источник
6
У вас php-xmlустановлен и включен модуль?
marian0

Ответы:

157

Для PHP 7 и Ubuntu 14.04 процедура следующая. Поскольку PHP 7 не входит в официальный PPA Ubuntu, вы, вероятно, установили его через 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

Если вы используете более позднюю версию Ubuntu, в которую включен PHP 7, процедура, скорее всего, такая же (за исключением добавления любого стороннего репозитория).

Андреас Бергстрём
источник
14
К вашему сведению, вам не нужно раскомментировать extension = php_xmlrpc.dll в Ubuntu, поскольку это расширение Windows, просто сделайте второй шаг, и он будет работать
wmfrancia
Я последовал тому же самому: все же я получаю вызов неопределенной функции simplexml_load_string () в /var/www/html/magento1901/lib/Varien/Simplexml/Config.php в строке 510
Сушивам,
1
Я получил нераспознанную служебную ошибку. Я только что перезапустил apache2, и это устранило эту проблему. Спасибо за помощь, найдите эту строку в PHP.ini
Coded Container
да, это сработало, и я смог пропустить первый шаг, как заявил @wmfrancia.
Линнея Хаксфорд,
Я попробовал то же самое, но у меня ничего не вышло. Из журнала ошибок Неперехваченная ошибка: вызов неопределенной функции simplexml_load_string () в /var/www/html/lib/Varien/Simplexml/Config.php
Killer
52

Если модуль XML не установлен, установите его.

Текущая версия 5.6 в ubuntu 14.04:

sudo apt-get install php5.6-xml

И не забудьте после этого запустить команду sudo service apache2 restart

Зулхилми Зайнуди

Фабиан Блехшмидт
источник
4
Вы можете просто выполнить «sudo apt install php-xml», и он получит правильную версию для вас.
Наоми
1
И не забудьте запустить sudo service apache2 restartкоманду после этого
Зульхилми Зайнудин
8

Я тоже столкнулся с этой проблемой. Моя операционная система - Ubuntu 18.04, а моя версия PHP - PHP 7.2 .

Вот как я это решил:

Установите Simplexml на свой сервер Ubuntu:

sudo apt-get install php7.2-simplexml

Перезагрузите сервер Apache

sudo systemctl restart apache2

Это все.

надеюсь, это поможет

Обещание Престон
источник
7

Убедитесь, что у вас установлен и включен модуль 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'];
marian0
источник
Я изменил свою версию php для терминала, и она работает нормально
anil
6

Я думаю, это может быть что-то вроде этого сообщения: Класс SimpleXMLElement не найден в puphpet PHP 5.6 Так что, возможно, вы могли бы установить / активировать

php-xml or php-simplexml

Не забудьте активировать библиотеки в файле php.ini . (как верхний комментарий )

Бьорн Пфостер
источник
Также попробуйте эту ссылку
Björn Pfoster
2

Чтобы исправить эту ошибку на Centos 7 :

  1. Установите расширение PHP:

    sudo yum установить php-xml

  2. Перезагрузите ваш веб-сервер. В моем случае это php-fpm :

    перезапуск сервисов php-fpm

Yesnik
источник
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
Аджай Сингх
источник