8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

amazonlinux2のhttpd + php7.4で「Uncaught Error: Call to undefined function simplexml_load_string」が出た場合の対処法

Last updated at Posted at 2020-08-19

エラー

amazonlinux2で動くwordpressにあるテーマをインストールしたら以下のエラーに遭遇。

Uncaught Error: Call to undefined function simplexml_load_string

ググった結果、どうやらSimpleXMLモジュールが入っていないとのこと。

動作環境

$ php -v
PHP 7.4.7 (cli) (built: Jul  2 2020 23:17:59) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

$ amazon-linux-extras | grep enabled
 24  epel=latest              enabled      [ =7.11  =stable ]
 42  php7.4=latest            enabled      [ =stable ]

$ yum list installed | grep php
php-cli.x86_64                        7.4.7-1.amzn2                  @amzn2extra-php7.4
php-common.x86_64                     7.4.7-1.amzn2                  @amzn2extra-php7.4
php-fpm.x86_64                        7.4.7-1.amzn2                  @amzn2extra-php7.4
php-json.x86_64                       7.4.7-1.amzn2                  @amzn2extra-php7.4
php-mbstring.x86_64                   7.4.7-1.amzn2                  @amzn2extra-php7.4
php-mysqlnd.x86_64                    7.4.7-1.amzn2                  @amzn2extra-php7.4
php-pdo.x86_64                        7.4.7-1.amzn2                  @amzn2extra-php7.4

対処方法

amazon-linux-extrasでepelを有効化して、php-xmlをインストールする。

sudo yum install php-xml -y

SimpleXMLが読み込まれていることを確認する。

$ php -i | grep -i simplexml
/etc/php.d/20-simplexml.ini
SimpleXML
SimpleXML support => enabled

それから、あるWebページでモジュールの読み込み順番が大切との記述を発見。

この原因がなかなかわからず、権限変えたり色々やりましたが、結論としてモジュールを読み込む順番が大切でした。
simplexml.so を実行するためには、別の拡張モジュールが必要になるため、そのモジュールよりも後に拡張モジュールを読み込まないとエラーになる、ということのようです。

from SimpleXMLがインストール出来ない時に試す方法 | 東京都|システム開発会社|株式会社ベスピィ

そのため、simplexmlモジュールの読み込み順番の調整する。

mv /etc/php.d/{20,40}-simplexml.ini

最後に、php-fpmとhttpdを再起動する

sudo systemctl restart php-fpm
sudo systemctl restart httpd

これでエラーが解消された。

初め、php-fpmが動いていることに気づかず、httpdだけ再起動しても反映されなくて焦った。

参考

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?