PHP: अपरिभाषित फ़ंक्शन को कॉल करें: simplexml_load_string ()


85

मैं क्रोन फ़ाइल का उपयोग करके फेसबुक काउंट फ़ंक्शन को कार्यान्वित कर रहा हूं। जिसमें क्रोन हर 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मॉड्यूल स्थापित और सक्षम है?
मारी ०

जवाबों:


154

PHP 7 और Ubuntu 14.04 के लिए प्रक्रिया इस प्रकार है। चूंकि PHP 7 आधिकारिक उबंटू पीपीए में नहीं है, इसलिए संभव है कि आप इसे Ondjej Surý के PPA (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

और अपाचे को फिर से शुरू करें:

sudo service apache2 restart

यदि आप बाद के उबंटू संस्करण पर हैं जहां PHP 7 शामिल है, तो यह प्रक्रिया सबसे अधिक संभावना है, साथ ही साथ (किसी भी 3 पार्टी रिपॉजिटरी को जोड़ने के अलावा)।


14
बस फीबी आपको उबंटू पर विस्तार करने की आवश्यकता नहीं है = php_xmlrpc.dll उबंटू पर है क्योंकि यह एक विंडोज़ एक्सटेंशन है बस दूसरा चरण करें और यह काम करेगा
wmfrancia

मैंने उसी का अनुसरण किया: अभी भी मुझे अपरिभाषित समारोह को कॉल करें
simplexml_load_string

1
मुझे एक गैर-मान्यता प्राप्त सेवा त्रुटि मिली थी। मैंने बस Apache2 को फिर से शुरू किया और इस मुद्दे को तय किया। मदद के लिए थैक्स PHP.ini में इस लाइन को ढूंढते हैं
कोडेड कंटेनर

हां, यह काम किया, और मैं @wmfrancia के अनुसार पहला कदम छोड़ सकता था।
लिनिया हक्सफ़ोर्ड

मैंने वही कोशिश की लेकिन मेरे लिए काम नहीं किया। त्रुटि लॉग से अनकवर्ड एरर: अपरिभाषित फ़ंक्शन को कॉल करें simplexml_load_string () in /var/www/html/lib/Varien/Simplexml/Config.php
किलर

51

यदि XML मॉड्यूल स्थापित नहीं है, तो इसे स्थापित करें।

वर्तमान संस्करण 5.6 ubuntu 14.04 पर:

sudo apt-get install php5.6-xml

और इसके बाद sudo service apache2 पुनरारंभ कमांड चलाना न भूलें

ज़ुल्हिलमी ज़ैनुडी


4
आप बस "sudo apt install php-xml" कर सकते हैं और इसे आपके लिए सही संस्करण मिल जाएगा।
नाओमी

1
और इसके sudo service apache2 restartबाद कमांड चलाना न भूलें
ज़ुल्हिलमी ज़ैनुद्दीन

7

मुझे भी इस मुद्दे का सामना करना पड़ा। मेरा ऑपरेटिंग सिस्टम Ubuntu 18.04 है और मेरा PHP संस्करण PHP 7.2 है

यहां बताया गया है कि मैंने इसे कैसे हल किया:

अपने Ubuntu सर्वर पर Simplexml स्थापित करें:

sudo apt-get install php7.2-simplexml

Apache Server को पुनरारंभ करें

sudo systemctl restart apache2

बस इतना ही।

आशा है कि ये आपकी मदद करेगा


6

मुझे लगता है कि यह इस पोस्ट में कुछ इस तरह हो सकता है: कक्षा 'SimpleXMLElement' puphpet PHP 5.6 पर नहीं मिला है तो शायद आप इसे स्थापित / सक्रिय कर सकते हैं

php-xml or php-simplexml

पुस्तकालयों को php.ini फ़ाइल में सक्रिय करना न भूलें । (शीर्ष टिप्पणी की तरह )



5

सुनिश्चित करें कि आपके पास php-xml मॉड्यूल स्थापित और सक्षम है php.ini

आप रिस्पॉन्स फॉर्मेट को भी json में बदल सकते हैं जिसे संभालना आसान है। उस स्थिति में आपको केवल &format=jsonक्वेरी स्ट्रिंग में जोड़ना होगा।

$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

1

Centos 7 पर इस त्रुटि को ठीक करने के लिए :

  1. PHP एक्सटेंशन स्थापित करें:

    sudo yum install php-xml

  2. अपने वेब सर्वर को पुनरारंभ करें। मेरे मामले में यह php-fpm है :

    सेवाओं php-fpm पुनः आरंभ


0

Nginx (अपाचे के बिना) और PHP 7.2 के लिए, php7.2-xml स्थापित करना पर्याप्त नहीं था। इसे काम करने के लिए php7.2-simplexml पैकेज स्थापित करना पड़ा

तो डेबियन / ubuntu के लिए कमांड, पैकेज को अपडेट करें और दोनों पैकेज को स्थापित करें

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

और Nginx और php दोनों को पुनरारंभ करें

systemctl restart nginx php7.2-fpm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.