PHP: Appel à une fonction non définie: simplexml_load_string ()


85

J'implémente la fonction de comptage de Facebook en utilisant le fichier cron. Dans lequel cron s'exécute toutes les 10 minutes et compte le total des goûts d'une 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("abc@gmail.com","hi".$fb_like_count,$message);
}

Mais j'obtiens une erreur de fonction d'appel non définie.


6
Le php-xmlmodule est-il installé et activé?
marian0

Réponses:


154

Pour PHP 7 et Ubuntu 14.04, la procédure est la suivante. Puisque PHP 7 ne fait pas partie des PPA officiels d'Ubuntu, vous l'avez probablement installé via le PPA d'Ondřej Surý (sudo add-apt-repository ppa: ondrej / php). Accédez à /etc/php/7.0/fpm et éditez php.ini, décommentez la ligne suivante:

extension=php_xmlrpc.dll

Ensuite, installez simplement php7.0-xml:

sudo apt-get install php7.0-xml

Et redémarrez PHP:

sudo service php7.0-fpm restart

Et redémarrez Apache:

sudo service apache2 restart

Si vous utilisez une version ultérieure d'Ubuntu où PHP 7 est inclus, la procédure est probablement la même (sauf l'ajout d'un référentiel tiers).


14
Juste FYI vous n'avez pas besoin de l' extension uncomment = php_xmlrpc.dll sur Ubuntu qui est une extension de fenêtres juste faire la deuxième étape et cela fonctionnera
wmfrancia

J'ai suivi la même chose: je reçois toujours un appel à la fonction non définie simplexml_load_string () dans /var/www/html/magento1901/lib/Varien/Simplexml/Config.php en ligne 510
Sushivam

1
J'avais reçu une erreur de service non reconnue. Je viens de redémarrer apache2 et cela a résolu ce problème. Merci pour l'aide à trouver cette ligne dans PHP.ini
Conteneur codé

oui, cela a fonctionné, et j'ai pu sauter la première étape comme l'a déclaré @wmfrancia.
Linnea Huxford

J'ai essayé la même chose mais je n'ai pas fonctionné pour moi. À partir du journal d'erreurs Erreur non interceptée: Appel à la fonction non définie simplexml_load_string () dans /var/www/html/lib/Varien/Simplexml/Config.php
Killer

51

Si le module XML n'est pas installé, installez-le.

Version actuelle 5.6 sur Ubuntu 14.04:

sudo apt-get install php5.6-xml

Et n'oubliez pas d'exécuter la commande de redémarrage sudo service apache2 après cela

Zulhilmi Zainudi


4
Vous pouvez simplement faire "sudo apt install php-xml" et il obtiendra la bonne version pour vous.
naomi

1
Et n'oubliez pas de lancer la sudo service apache2 restartcommande après
Zulhilmi Zainudin

7

J'ai également fait face à ce problème. Mon système d'exploitation est Ubuntu 18.04 et ma version PHP est PHP 7.2 .

Voici comment je l'ai résolu:

Installez Simplexml sur votre serveur Ubuntu:

sudo apt-get install php7.2-simplexml

Redémarrez le serveur Apache

sudo systemctl restart apache2

C'est tout.

J'espère que ça aide



5

Assurez-vous que le module php-xml est installé et activé dans php.ini.

Vous pouvez également changer le format de réponse en json, ce qui est plus facile à gérer. Dans ce cas, vous devez uniquement ajouter &format=jsonà la chaîne de requête URL.

$rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=".urlencode($source_url);

Et puis utilisez json_decode()pour récupérer des données dans votre script:

$result = json_decode($content, true);
$fb_like_count = $result['like_count'];

J'ai modifié ma version de terminal php alors cela fonctionne bien
anil

1

Pour corriger cette erreur sur Centos 7 :

  1. Installez l'extension PHP:

    sudo yum installer php-xml

  2. Redémarrez votre serveur Web. Dans mon cas, c'est php-fpm :

    redémarrage des services php-fpm


0

Pour Nginx (sans apache) et PHP 7.2, installer php7.2-xml ne suffisait pas. J'ai dû installer le package php7.2-simplexml pour le faire fonctionner

Donc, les commandes pour debian / ubuntu, mettent à jour les packages et installent les deux packages

apt update
apt install php7.2-xml php7.2-simplexml

Et redémarrez Nginx et php

systemctl restart nginx php7.2-fpm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.