PHP 要件
個々のモジュールの中には、以下に挙げるもの以外に PHP 拡張機能や設定に関する特別な要件を持つものもあるため、そのモジュールのドキュメントを参照してください。
サポートされている PHP バージョン
| PHP バージョン | Drupal のサポート | Drupal で推奨 |
|---|---|---|
| 5.5 | ||
| 5.6 | ||
| 7.0 | はい、Drupal 8.7.0 で 7.0.8(下記の注 2 を参照) | |
| 7.1 | はい | |
| 7.2 | はい、Drupal 8.5.0 で | |
| 7.3 | はい、Drupal 8.6.4 で(下記の注 1 を参照) | |
| 7.4 | はい、Drupal 8.8.3 で | |
| 8.0 | ||
1) PHP 7.3 サポートの詳細については、変更通知 をお読みください。
2) PHP 5 のサポート終了の詳細については、変更通知 をお読みください。
「推奨」PHP バージョンとはどういう意味か?
Drupal は、サポートされているすべての PHP バージョンで動作します。推奨される PHP バージョンは、より長くサポートされるため、Drupal サイトを構築するのに最適な選択肢です。PHP 7 は、パフォーマンスとキャッシュの大幅な改善ももたらします。
PHP 5.5、5.6、7.0 は 2018 年後半にサポート終了(end-of-life)に達し、PHP 7.1 は 2019 年 12 月 1 日に達しました。(詳細は PHP の サポートされているバージョン を参照してください。)Drupal 8 は 2019 年 5 月に PHP 5.5 と 5.6 のサポートを終了 し、新しいバージョンでは 7.0.8 以降が必要です。少なくとも PHP 7.2 へのアップグレードをお勧めします。(Ubuntu 18.04 は PHP 7.2 を、Debian stable は 7.3 を採用しています。)
注意:これは Drupal 7 には影響せず、Drupal 7 は引き続き PHP 5.2.4 以降と互換性があります。それが変わる場合には別途告知が行われます――Drupal 7 の PHP 要件 を参照してください。
必須の PHP 拡張機能
Drupal コアが使用する拡張機能は、コアの composer.json ファイルで定義されています――たとえば Drupal 8.7.x のファイル を参照してください。「require」セクションで「ext-」で始まるキーを探してください。
注意:システムに PHP 拡張機能をインストールする(少なくとも Linux と Mac では)とは、パッケージマネージャーを使って適切な PHP パッケージを見つけてインストールすることを意味します。通常、拡張機能 Foo のパッケージ名は「php-foo」や「php7-foo」ですが、これは異なる場合があります。一部の拡張機能は、コアの PHP パッケージにデフォルトで含まれています。
データベース拡張機能
Drupal 8 が正しくインストールされ機能するためには、PHP Data Objects(PDO) 拡張機能を有効にする必要があります。PECL 版の PDO は Drupal 8 と互換性がありません。また、選択したデータベース用の PHP 拡張機能をインストールして有効にする必要があります。
現在 Drupal でサポートされているデータベースコネクタには、mysql(元の MySQL 拡張機能)、mysqli(現代の MySQL 向けの改良コネクタ)、pgsql(PostgreSQL 向け)があります。注意:PHP 5.x では、mysql 拡張機能はデフォルトで含まれなくなりました。選択したコネクタのインストールと有効化については、上記のリンクを参照してください。
XML 拡張機能
PHP XML 拡張機能(Blog API、Drupal モジュール、Ping 用)。この拡張機能は標準の PHP インストールに デフォルトで含まれています。Windows 版 PHP もこれをサポートしています。XML 拡張機能を有効にすると、現在システム要件となっている PHP DOM も含まれます。
画像処理ライブラリ
Drupal 8 では、画像を操作する(リサイズ、キャッシュ、画像モジュール)ために、GD のような PHP 用の画像ライブラリが必要です。ImageMagick も基本的な画像処理でサポートされていますが、contrib モジュールのサポートは少なめです。
OpenSSL
Drupal が外向きの HTTPS リクエストを行えるようにするために、PHP OpenSSL が推奨されます。一部のプラットフォームでは、これは別のパッケージ(例:php7-openssl)として提供されます。
Drupal の Update Manager も HTTPS を介して更新を確認することがあるため、この拡張機能はさらに重要になります。issue #1538118 と https://groups.drupal.org/node/506128 を参照してください。
JSON
Drupal 8 では、JSON 付きでコンパイルされた PHP が必要です。JSON サポートは通常 PHP コアに組み込まれていますが、次のようなエラーに遭遇した場合:
PHP Fatal error: Call to undefined function Drupal\\Component\\Serialization\\json_encode() in ... core/lib/Drupal/Component/Serialization/Json.php
JSON 拡張機能 を追加してみてください。
cURL
PHP cURL は、Drupal 8 の SimpleTest モジュールに必要であり、Aggregator やその他の contrib モジュールでも使われます。ほとんどの Linux ディストリビューションでは通常デフォルトで有効になっています。そうでない場合は、php.ini(Windows の場合)またはパッケージマネージャー(Linux の場合)で有効にします。
Mbstring
PHP mbstring はマルチバイト文字列サポートを提供し、英語以外の言語のインストールや多言語サイトに必要です。UTF-8 や UCS-2 のような Unicode ベースのエンコーディングを扱うのに役立ちます。
PHP 設定
メモリ要件
PHP のメモリ要件は、有効にしたモジュールによって大きく異なります。最小は 64MB です。
PHP の設定がこれを満たさない場合、警告メッセージが表示されます。64MB はデフォルトの Drupal インストールには十分かもしれませんが、ライブサイトでは 128MB や 256MB を必要とすることがよくあります。一部のサイト(特にマルチメディアを扱うもの)ではさらに多く必要になる場合があります。現在および将来のモジュール構成に十分なメモリをホスティングプロバイダーがサポートしていることを確認してください。詳細は PHP メモリ制限の変更 を参照してください。
.htaccess の設定
一部のメモリ設定は、Drupal に付属するデフォルトの .htaccess ファイルに含まれているため、明示的に設定する必要がないかもしれません。これらは次の場合にのみ機能します:
- Apache(または互換サーバー)を使っている
- .htaccess ファイルが読み込まれる(httpd.conf で AllowOverride All が設定されている必要があります)
- PHP が Apache モジュールとしてインストールされている
一部の共有ホスティング環境では、これらの設定が制限されている場合があります。必要に応じてプロバイダーに助けを求めてください。
その他のインターフェース
その他のインターフェースの設定を変更する方法については、PHP マニュアル を参照してください。
Xdebug
Xdebug を使う場合:
- xdebug.show_exception_trace = 0 を設定します――Drupal インストーラーのクラッシュを防ぐためです。
- xdebug.collect_params = ? を設定します――高い値は Drupal のインストール/動作を妨げる可能性があります。
- xdebug.max_nesting_level = 256 を設定します――古いデフォルト値(100)は一部のページで失敗を引き起こすことがあります。
他のソースからの PHP
Drupal は PHP.net の PHP で動作するように設計されています。他のソースからの PHP をサポートするためにあらゆる努力がなされていますが、保証はされていません。Suhosin は一部の関数を壊すことが知られています。一部の OS はコンポーネントを異なる形でパッケージ化していることもあります。
PHP 要件の詳細
インストール済みのバージョン、環境変数などを含むシステムの情報を得るために phpinfo をどう使うかを学ぶには、Drupal.org の phpinfo() を参照してください。
より新しい PHP バージョンは、お使いの Linux ディストリビューションを通じて入手できる場合があります。ディストリビューションのドキュメントを確認してください。
注目すべき注意点
- 32 ビット PHP の制限 に注意してください。
- Drupal の Composer 依存関係は PHP 5.5.9 を使って構築されています。より高い PHP バージョンでは、更新されたパッケージの恩恵を受けられることがあります――最適なバージョンにするには Composer update を使ってください。
- Drupal 8 の Update Manager は、必要なライブラリ(例:libssh2-php)がインストールされていれば、SSH 経由でモジュールやテーマをインストール/更新できます。
- オペコードキャッシュに APC を使うには、Drupal 8 ではバージョン 3.1.13 以降が必要です。
- opcache が有効な場合、opcache.save_comments の設定を ON(1)にする必要があります。そうしないとアノテーションが正しく読み込まれません。