発生したエラー
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
こちらもおススメ