システム開発 - PHPのモジュールの確認とインストール(Laravel9編)

 

PHPのモジュールの確認とインストールでは、Amazon linux2のデフォルト環境でphpをインストールした場合の初期状態の確認とmbstringのインストールをおこいました。

今回は、Laravel9を導入したのですが、下記のエラーが表示されました。それに伴う調査等の内容を紹介したいと思います。

Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: dom, xml, xmlwriter

環境

  • Amazon Linux2
  • php(php-fpm) 8.0.25
  • Laravel9

モジュールの確認

現時点でインストールされているモジュールの一覧を確認してみます。

今回は、php-fpmのエラーですので、php-fpmで登録されているモジュールを確認しています。

php-cliとphp-fpmの違いについて

$ php-fpm -m
[PHP Modules]
・・・
[Zend Modules]

縦に長くなるので、PHP Modulesの部分を下記に書き出します。

bz2 / calendar / cgi-fcgi / Core / ctype / curl / date / exif / fileinfo / filter / ftp / gettext / hash / iconv / json / libxml / mbstring / mysqli / mysqlnd / openssl / pcre / PDO / pdo_mysql / pdo_sqlite / Phar / Reflection / session / sockets / SPL / sqlite3 / standard / tokenizer / zip / zlib

上記のエラーにあるdom / xml / xmlwriter という3つのモジュールは含まれていないようです。

dom / xml / xmlwriter

さて、今回は、dom / xml / xmlwriter という3つのモジュールのインストールを求められています。

dom - Dom(Document Object Model)

DOM 拡張モジュールを使用すると、DOM API を使用した XML ドキュメントの操作を PHP で行えます。

この拡張モジュールはデフォルトで有効になっています。

https://www.php.net/manual/ja/intro.dom.php

xml - XML パーサ

XML (eXtensible Markup Language) は、Web における構造化された ドキュメント交換用のデータフォーマットです。XML は、World Wide Web consortium (W3C) で規定された規格です。

この拡張モジュールはデフォルトで有効になっています。

https://www.php.net/manual/ja/book.xml.php

xmlwriter - XMLWriter

これは、XMLWriter 拡張モジュールです。 libxml の xmlWriter API をラップしています。

XMLWriter 拡張モジュールは、PHP にバンドルされています。 この拡張モジュールはデフォルトで有効になっています。

https://www.php.net/manual/ja/book.xmlwriter.php

全て「デフォルトで有効になっています。」となっていますが、Amazon Linux2のphpインストールでは入ってきていないようです。この辺りの表現はわからない部分もありますが、どちらにしてもインストールする必要がありそうです。

モジュールのインストール

最初にdomのインストールを試みようと下記のコマンドを実行してみました。インストールされる内容を確認したいだけなので、-yオプションは外しています。

$ sudo yum install php-dom
・・・
==============================================================================================================
 Package              アーキテクチャー    バージョン                     リポジトリー                    容量
==============================================================================================================
インストール中:
 php-xml              x86_64              8.0.25-1.amzn2                 amzn2extra-php8.0              173 k
依存性関連でのインストールをします:
 libxslt              x86_64              1.1.28-6.amzn2                 amzn2-core                     240 k

トランザクションの要約
==============================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)
・・・
Is this ok [y/d/N]: N

一度「N」を入力して、インストールを中断しました。上記を見る限り、「php-xml」も依存関係のパッケケージとしてインストールされそうです。

次に「xmlwriter」で確認してみます。

$ sudo yum install php-xmlwriter
・・・
==============================================================================================================
 Package              アーキテクチャー    バージョン                     リポジトリー                    容量
==============================================================================================================
インストール中:
 php-xml              x86_64              8.0.25-1.amzn2                 amzn2extra-php8.0              173 k
依存性関連でのインストールをします:
 libxslt              x86_64              1.1.28-6.amzn2                 amzn2-core                     240 k

トランザクションの要約
==============================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)
・・・
Is this ok [y/d/N]: N

xmlwriterのインストールでも、「php-xml」も依存関係のパッケケージとしてインストールされそうです。

念のため、最後に「php-xml」も確認してみます。

$ sudo yum install php-xml
・・・
==============================================================================================================
 Package              アーキテクチャー    バージョン                     リポジトリー                    容量
==============================================================================================================
インストール中:
 php-xml              x86_64              8.0.25-1.amzn2                 amzn2extra-php8.0              173 k
依存性関連でのインストールをします:
 libxslt              x86_64              1.1.28-6.amzn2                 amzn2-core                     240 k

トランザクションの要約
==============================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

これを見ると、下記どのコマンドでもインストールされるモジュールは、「php-xml」と「libxslt」の二つで、同じ結果になるようです。

どれでも結果が同じことがわかりましたので、インストールを行いました。

$ sudo yum install php-dom
$ sudo yum install php-xmlwriter
$ sudo yum install php-xml

そして、インストールされたモジュールを確認します。

$ php-fpm -m
[PHP Modules]
・・・
[Zend Modules]

bz2 / calendar / cgi-fcgi / Core / ctype / curl / date / dom / exif / fileinfo / filter / ftp / gettext / hash / iconv / json / libxml / mbstring / mysqli / mysqlnd / openssl / pcre / PDO / pdo_mysql / pdo_sqlite / Phar / Reflection / session / SimpleXML / sockets / SPL / sqlite3 / standard / tokenizer / xml / xmlreader / xmlwriter / xsl / zip / zlib

インストール前と比べ、6つのモジュールが追加されました。

どのようなデータがインストールされたかは下記で確認します。内容が長くなるので、表示は割愛します。

$ rpm -ql php-xml
・・・
/etc/php.d/20-dom.ini
/etc/php.d/20-simplexml.ini
/etc/php.d/20-xml.ini
/etc/php.d/20-xmlwriter.ini
/etc/php.d/20-xsl.ini
/etc/php.d/30-xmlreader.ini
・・・

上記で確認したように、6つのモジュールが追加れています。

SimpleXML

SimpleXML拡張モジュールは、 XMLをオブジェクトにとても簡単かつ容易に変換するための機能を 提供します。変換後のオブジェクトでは、 通常のプロパティセレクタや配列反復子を用いて処理を行うことが 可能です。

この拡張モジュールはデフォルトで有効になっています。

https://www.php.net/manual/ja/book.simplexml.php

xmlreader - XMLReader

XMLReader 拡張モジュールは、プル型の XML パーサです。ドキュメント ストリーム内をカーソル風に進んでいき、その途中の各ノードで立ち止まります。

XMLReader 拡張モジュールは、PHP にバンドルされています。 この拡張モジュールはデフォルトで有効になっています。

https://www.php.net/manual/ja/book.xmlreader.php

xsl

XSL 拡張モジュールは、XSL の標準規格を実装したもので、 libxslt ライブラリ を用いて XSLT 変換 を行います。

PHP には、デフォルトでXSL拡張モジュールが含まれており、 configureに引数--with-xsl[=DIR] を追加することにより有効にすることができます (DIR は libxslt をインストールしたディレクトリです)。

https://www.php.net/manual/ja/book.xsl.php

上記で「libxslt」もインストールされていましたが、「xsl」モジュールで使用されているようです。

php-fpmの再起動

追加したライブラリを有効にするために再起動が必要です。

$ sudo systemctl restart php-fpm

ブラウザで確認すると無事Laravel9のページが表示されました。

まとめ

今回、Laravel9の起動により表示されたのは、下記のようなものでした。

Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: dom, xml, xmlwriter

今回、dom / xml / xmlwriterの3つのモジュールを追加する予定でしたが、結果、SimpleXML / xmlreader / xslという3つの新たなモジュールが追加されました。

今後、当モジュールの働きなども、深堀していければと思っています。

文責:フライング・ハイ・ワークス代表 松田 治人(まつだ はるひと)
会社では、Laravelを中心としたエンジニアとして働いており、これまでに50本以上のLaravelによるWebアプリケーションの構築や東京でホームページ制作をしています。
エンジニアとして弊社で働きたい方、お仕事のご相談など、お待ちしております。

WEBサイト制作のお問い合わせ、お見積り依頼、ご質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら

フライング・ハイ・ワークスの紹介

フライング・ハイ・ワークスは、東京のホームページ制作・Web制作会社・システム開発会社です。東京都及びその近郊(首都圏)を中心として、SEO対策を意識したPC及びスマホのサイトをワンソース(レスポンシブ対応)で制作します。

実績

デザイナーチームは、グラフィックデザインやイラストの制作も得意としており、著作権を意識しない素材の提供が可能です。システム・コーディングチームでは、Laravelなどを使用したスクラッチからのオリジナルシステム開発を始め、WordPressのカスタマイズを得意としております。

また、SEOやランディングページ(LP)、広告向けバナーなどを他社様でやっていた作業の引継ぎでも問題ありません。制作実績は多数ございますので、お客様に合わせたご提案が可能です。

500点以上のフライング・ハイ・ワークスの制作実績ページをご覧ください!

東京のホームページ制作・Web制作のお問い合わせ、お見積り依頼、相談、質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら