[PHP] ubuntuのDockerでエラーClass 'SimpleXMLElement' not found が出たときの対処法

カテゴリ: 未分類

発生したエラー

PHPでDockerのubuntu:20.04コンテナを使用して、AWS SDKを使用していたところ下記のエラーが発生した。

PHP Fatal error:  Uncaught Error: Class 'SimpleXMLElement' not found in ./vendor/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php:44
Stack trace:
#0 ./vendor/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php(39): Aws\Api\Parser\RestXmlParser->parseXml()
#1 ./vendor/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php(31): Aws\Api\Parser\RestXmlParser->parseMemberFromStream()
#2 ./vendor/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php(63): Aws\Api\Parser\RestXmlParser->payload()
#3 ./vendor/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php(37): Aws\Api\Parser\AbstractRestParser->__invoke()
#4 ./vendor/aws/aws-sdk-php/src/S3/AmbiguousSuccessParser.php(69): Aws\S3\RetryableMalformedResponseParser->__invoke()
#5 ./vendor/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php(29): Aws\S3\AmbiguousSuccessParser->__invoke()
#6 ./vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php(125): Aws\S3\GetBucketLocationParser->__invoke()
#7 ./vendor/aws/aws-sdk-php/src/Wr in ./vendor/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php on line 44
ERROR: 255

原因

phpのxmlエクステンションがインストールされていなかったため。

対応方法

以下の形で、Dockerfileでphp7.4-xmlをインストールすればよいです。

FROM ubuntu:20.04
RUN apt update && \
    apt-add-repository ppa:ondrej/php -y && \
    apt-get install php7.4 -y \
    apt-get install php7.4-xml -y

Ubuntuのコンテナ内で直接コマンド実行したい場合は、下記のコマンドを実行します。

sudo add-apt-repository -y ppa:ondrej/php 
sudo apt update 
sudo apt install -y php7.4
sudo apt install -y php7.4-xml

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。