PHP: Tanımlanmamış işleve çağrı: simplexml_load_string ()


86

Cron dosyasını kullanarak facebook sayma işlevini uyguluyorum. Hangi cron'un her 10 dakikada bir çalıştığı ve bir sayfanın toplam beğenilerini saydığı.

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

Ama tanımsız çağrı fonksiyonu hatası alıyorum.


6
php-xmlYüklü ve etkin modülünüz var mı?
marian 0

Yanıtlar:


157

PHP 7 ve Ubuntu 14.04 için prosedür aşağıdaki gibidir. PHP 7 resmi Ubuntu PPA'larında olmadığından, muhtemelen Ondřej Surý'nin PPA'sı (sudo add-apt-repository ppa: ondrej / php) aracılığıyla yüklediniz. /Etc/php/7.0/fpm adresine gidin ve php.ini'yi düzenleyin, aşağıdaki satırın açıklamasını kaldırın:

extension=php_xmlrpc.dll

Ardından php7.0-xml'yi kurun:

sudo apt-get install php7.0-xml

Ve PHP'yi yeniden başlatın:

sudo service php7.0-fpm restart

Ve Apache'yi yeniden başlatın:

sudo service apache2 restart

PHP 7'nin dahil olduğu daha sonraki bir Ubuntu sürümündeyseniz, prosedür de büyük olasılıkla aynıdır (herhangi bir üçüncü taraf deposu ekleme dışında).


14
Ubuntu'da extension = php_xmlrpc.dll yorumunu kaldırmanıza gerek yok, çünkü bu bir Windows uzantısıdır, sadece ikinci adımı yapın ve çalışacaktır
wmfrancia

Ben de aynısını takip ettim: hala /var/www/html/magento1901/lib/Varien/Simplexml/Config.php içinde undefined function simplexml_load_string ()
çağrısı alıyorum

1
Tanınmayan bir hizmet hatası aldım. Apache2'yi yeni yeniden başlattım ve bu sorunu çözdü. Yardım için teşekkürler PHP.ini'de bu satırı bulma
Kodlu Konteyner

evet, bu işe yaradı ve @wmfrancia'nın belirttiği gibi ilk adımı atlayabildim.
Linnea Huxford

Ben de aynı şeyi denedim ama benim için çalışmadım. Hata günlüğünden Yakalanmamış Hata: /var/www/html/lib/Varien/Simplexml/Config.php içinde tanımlanmamış simplexml_load_string () işlevine çağrı
Killer

52

XML modülü kurulu değilse kurun.

Ubuntu 14.04'teki mevcut 5.6 sürümü:

sudo apt-get install php5.6-xml

Ve bundan sonra sudo service apache2 restart komutunu çalıştırmayı unutmayın.

Zulhilmi Zainudi


4
Sadece "sudo apt install php-xml" yapabilirsiniz ve sizin için doğru sürümü alacaktır.
naomi

1
Ve sudo service apache2 restartondan sonra komutu çalıştırmayı unutmayın
Zulhilmi Zainudin

8

Ben de bu sorunla karşılaştım. İşletim sistemim Ubuntu 18.04 ve PHP sürümüm PHP 7.2 .

İşte bunu nasıl çözdüm:

Simplexml'yi Ubuntu Sunucunuza yükleyin:

sudo apt-get install php7.2-simplexml

Apache Sunucusunu Yeniden Başlatın

sudo systemctl restart apache2

Bu kadar.

Umarım bu yardımcı olur


7

Php-xml modülünün kurulu ve içinde etkinleştirildiğinden emin olun php.ini.

Ayrıca yanıt biçimini, kullanımı daha kolay olan json olarak değiştirebilirsiniz. Bu durumda sadece &format=jsonurl sorgu dizesine eklemeniz gerekir.

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

Ve sonra json_decode()komut dosyanızdaki verileri almak için kullanın :

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

terminal php sürümümü değiştirdim, sonra iyi çalışıyor
anil


2

Centos 7'de bu hatayı düzeltmek için :

  1. PHP uzantısını yükleyin:

    sudo yum yükleme php-xml

  2. Web sunucunuzu yeniden başlatın. Benim durumumda php-fpm :

    hizmetler php-fpm yeniden başlat


0

Nginx (apache olmadan) ve PHP 7.2 için php7.2-xml'i kurmak yeterli değildi. Çalışması için php7.2-simplexml paketini kurmam gerekiyordu

Debian / ubuntu komutları, paketleri günceller ve her iki paketi de kurar.

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

Ve hem Nginx hem de php'yi yeniden başlatın

systemctl restart nginx php7.2-fpm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.