PHP:未定義の関数の呼び出し:simplexml_load_string()


86

cronファイルを使用してFacebookのカウント機能を実装しています。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 2015

回答:


157

PHP7およびUbuntu14.04の場合、手順は次のとおりです。PHP7は公式のUbuntuPPAに含まれていないため、OndřejSurýの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

そして、Apacheを再起動します。

sudo service apache2 restart

PHP 7が含まれている新しいUbuntuバージョンを使用している場合、手順はほとんど同じです(サードパーティのリポジトリを追加することを除いて)。


14
Ubuntuでextension = php_xmlrpc.dllのコメントを解除する必要はありません。これはWindows拡張機能であるため、2番目の手順を実行するだけで機能します
wmfrancia 2016年

私は同じことに従いました:それでも、510行目の/var/www/html/magento1901/lib/Varien/Simplexml/Config.phpで未定義の関数simplexml_load_string()の呼び出しを取得します
Sushivam 2016年

1
認識できないサービスエラーが発生しました。apache2を再起動したところ、この問題が修正されました。PHP.iniでこの行を見つけるのに役立つThaks–
コード化されたコンテナ

うん、これはうまくいった、そして@wmfranciaが述べたように私は最初のステップをスキップすることができた。
リネアハックスフォード2016

私は同じことを試みましたが、うまくいきませんでした。エラーログからUncaughtError:/var/www/html/lib/Varien/Simplexml/Config.phpの未定義関数simplexml_load_string()の呼び出し
Killer

52

XMLモジュールがインストールされていない場合は、インストールしてください。

ubuntu 14.04の現在のバージョン5.6:

sudo apt-get install php5.6-xml

そして、その後にsudo service apache2restartコマンドを実行することを忘れないでください

Zulhilmi Zainudi


4
「sudoaptinstall php-xml」を実行するだけで、正しいバージョンが取得されます。
ナオミ

1
そして、sudo service apache2 restartその後にコマンドを実行することを忘れないでください
ZulhilmiZainudin20年

8

私もこの問題に直面しました。私のオペレーティングシステムがあるのUbuntu 18.04と私のPHPのバージョンがあるPHP 7.2

これが私がそれを解決した方法です:

UbuntuサーバーにSimplexmlをインストールします。

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 2015

6

私はそれがこの投稿のようなものである可能性があると思います: クラス 'SimpleXMLElement'はpuphpetPHP 5.6にあり ませんので、多分あなたはインストール/アクティブ化することができます

php-xml or php-simplexml

php.iniファイルでライブラリをアクティブ化することを忘れないでください。(トップコメントのように)



2

Centos 7でこのエラーを修正するには:

  1. PHP拡張機能をインストールします。

    sudo yum install php-xml

  2. Webサーバーを再起動します。私の場合、それは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.