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 ไม่ได้อยู่ใน Ubuntu PPA อย่างเป็นทางการคุณจึงควรติดตั้งผ่าน PPA ของOndřejSurý (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
เพียงแค่คุณไม่จำเป็นต้อง uncomment extension = php_xmlrpc.dll บน Ubuntu เนื่องจากเป็นส่วนขยายของ windows เพียงแค่ทำขั้นตอนที่สองและจะใช้งานได้
wmfrancia

ฉันทำตามสิ่งเดียวกัน: ฉันยังคงได้รับ Call to undefined function simplexml_load_string () ใน /var/www/html/magento1901/lib/Varien/Simplexml/Config.php ทางบรรทัด 510
Sushivam

1
ฉันได้รับข้อผิดพลาดของบริการที่ไม่รู้จัก ฉันเพิ่งรีสตาร์ท apache2 และสิ่งนี้แก้ไขปัญหานี้ได้ คุณต้องการความช่วยเหลือในการค้นหาบรรทัดนี้ใน PHP.ini
Coded Container

ใช่มันได้ผลและฉันสามารถข้ามขั้นตอนแรกได้ตามที่ @wmfrancia กล่าวไว้
Linnea Huxford

ฉันพยายามเหมือนกัน แต่ไม่ได้ผลสำหรับฉัน จากบันทึกข้อผิดพลาด Uncaught Error: Call to undefined function 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 หลังจากนั้น

Zulhilmi Zainudi


4
คุณสามารถทำ "sudo apt install php-xml" และจะได้รับเวอร์ชันที่ถูกต้องสำหรับคุณ
naomi

1
และอย่าลืมเรียกใช้sudo service apache2 restartคำสั่งหลังจากนั้น
Zulhilmi Zainudin

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'];

ฉันได้แก้ไขเวอร์ชัน php เทอร์มินัลของฉันแล้วมันใช้งานได้ดี
anil

6

ฉันคิดว่ามันอาจเป็นอย่างในโพสต์นี้: ไม่พบคลาส 'SimpleXMLElement' บน puphpet PHP 5.6 ดังนั้นคุณอาจติดตั้ง / เปิดใช้งาน

php-xml or php-simplexml

อย่าลืมที่จะเปิดใช้งานห้องสมุดในphp.iniไฟล์ (เหมือนความคิดเห็นด้านบน)



2

ในการแก้ไขข้อผิดพลาดนี้ในCentos 7 :

  1. ติดตั้งส่วนขยาย PHP:

    sudo yum ติดตั้ง php-xml

  2. รีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ ในกรณีของฉันคือphp-fpm :

    บริการ php-fpm รีสตาร์ท


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.