PHP: Aufruf einer undefinierten Funktion: simplexml_load_string ()


85

Ich implementiere die Facebook-Zählfunktion mit einer Cron-Datei. In welchem ​​Cron alle 10 Minuten ausgeführt wird und die Gesamtzahl der Likes einer Seite gezählt wird.

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);
}

Aber ich bekomme einen undefinierten Aufruffunktionsfehler.


6
Haben Sie ein php-xmlModul installiert und aktiviert?
— marian0

Antworten:


154

Für PHP 7 und Ubuntu 14.04 wird wie folgt vorgegangen. Da PHP 7 nicht in den offiziellen Ubuntu-PPAs enthalten ist, haben Sie es wahrscheinlich über Ondřej Surýs PPA (sudo add-apt-repository ppa: ondrej / php) installiert. Gehen Sie zu /etc/php/7.0/fpm und bearbeiten Sie die php.ini. Kommentieren Sie die folgende Zeile aus:

extension=php_xmlrpc.dll

Dann installieren Sie einfach php7.0-xml:

sudo apt-get install php7.0-xml

Und starten Sie PHP neu:

sudo service php7.0-fpm restart

Und starten Sie Apache neu:

sudo service apache2 restart

Wenn Sie eine spätere Ubuntu-Version verwenden, in der PHP 7 enthalten ist, ist die Vorgehensweise höchstwahrscheinlich auch dieselbe (außer das Hinzufügen eines Repositorys eines Drittanbieters).


14
Nur zu Ihrer Information, Sie müssen die Erweiterung = php_xmlrpc.dll unter Ubuntu nicht auskommentieren, da dies eine Windows-Erweiterung ist. Führen Sie einfach den zweiten Schritt aus und es wird funktionieren
— wmfrancia

Ich folgte dem gleichen: Ich erhalte immer noch den Aufruf der undefinierten Funktion simplexml_load_string () in /var/www/html/magento1901/lib/Varien/Simplexml/Config.php in Zeile 510
— Sushivam

1
Ich hatte einen nicht erkannten Servicefehler erhalten. Ich habe gerade apache2 neu gestartet und dies hat dieses Problem behoben. Vielen Dank für die Hilfe finden diese Zeile in PHP.ini
— Coded Container

Ja, das hat funktioniert und ich konnte den ersten Schritt überspringen, wie @wmfrancia sagte.
— Linnea Huxford

Ich habe das gleiche versucht, aber bei mir nicht funktioniert. Aus dem Fehlerprotokoll Nicht erfasster Fehler: Aufruf der undefinierten Funktion simplexml_load_string () in /var/www/html/lib/Varien/Simplexml/Config.php
— Killer

51

Wenn das XML-Modul nicht installiert ist, installieren Sie es.

Aktuelle Version 5.6 unter Ubuntu 14.04:

sudo apt-get install php5.6-xml

Und vergessen Sie nicht, den Befehl sudo service apache2 restart danach auszuführen

Zulhilmi Zainudi


4
Sie können einfach "sudo apt install php-xml" ausführen und es wird die richtige Version für Sie erhalten.
— Naomi

1
Und vergessen Sie nicht, das sudo service apache2 restartKommando danach
— auszuführen

7

Ich habe mich auch diesem Problem gestellt. Mein Betriebssystem ist Ubuntu 18.04 und meine PHP-Version ist PHP 7.2 .

So habe ich es gelöst:

Installieren Sie Simplexml auf Ihrem Ubuntu Server:

sudo apt-get install php7.2-simplexml

Starten Sie Apache Server neu

sudo systemctl restart apache2

Das ist alles.

ich hoffe das hilft



4

Stellen Sie sicher, dass Sie das PHP-XML-Modul installiert und aktiviert haben php.ini.

Sie können das Antwortformat auch in json ändern, was einfacher zu handhaben ist. In diesem Fall müssen Sie nur die &format=jsonURL-Abfragezeichenfolge hinzufügen .

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

Und dann verwenden Sie json_decode(), um Daten in Ihrem Skript abzurufen:

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

Ich habe meine Terminal-PHP-Version geändert, dann funktioniert es
— einwandfrei

1

So beheben Sie diesen Fehler auf Centos 7 :

  1. Installieren Sie die PHP-Erweiterung:

    sudo yum installiere php-xml

  2. Starten Sie Ihren Webserver neu. In meinem Fall ist es php-fpm :

    Dienste php-fpm Neustart


0

Für Nginx (ohne Apache) und PHP 7.2 reichte die Installation von php7.2-xml nicht aus. Musste das Paket php7.2-simplexml installieren, damit es funktioniert

Also die Befehle für debian / ubuntu, Pakete aktualisieren und beide Pakete installieren

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

Und starten Sie sowohl Nginx als auch PHP neu

systemctl restart nginx php7.2-fpm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.