web-dev-qa-db-fra.com

Appel de la fonction non définie: simplexml_load_string ()

J'implémente la fonction de décompte de Facebook à l'aide du fichier cron. Dans lequel cron est exécuté toutes les 10 minutes et compte le nombre total de pages 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("[email protected]","hi".$fb_like_count,$message);
}

Mais je reçois une erreur de fonction d’appel non définie.

69
anil

Pour PHP 7 et Ubuntu 14.04, la procédure est la suivante. Puisque PHP 7 ne figure pas dans les PPA officiels d'Ubuntu, vous l'avez probablement installé via le PPA d'Ondřej Surý (Sudo add-apt-repository ppa: ondrej/php). Allez dans /etc/php/7.0/fpm et éditez le fichier php.ini, sans commenter 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

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

139

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
41

Je pense que cela peut ressembler à quelque chose comme dans cet article: La classe 'SimpleXMLElement' ne se trouve pas sur le puphpet PHP 5.6 Vous pouvez donc peut-être installer/activer

php-xml or php-simplexml

N'oubliez pas d'activer les bibliothèques dans le fichier php.ini . (comme le haut commentaire )

4
Björn Pfoster

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

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

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

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

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

Pour corriger cette erreur sur Centos 7:

  1. Installez l'extension PHP:

    Sudo yum install php-xml

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

    services php-fpm redémarrer

0
yesnik