コンテンツにスキップ

PHP-FPM#

Lagoonの php-fpm Dockerイメージです。公式のPHP Alpineイメージに基づいています。

PHP-FPM(FastCGIプロセスマネージャ)は、追加機能を備えた代替PHP FastCGIの実装で、任意のサイズのサイト、特に忙しいサイトに役立ちます。

https://php-fpm.org/より

FastCGIは、サーバースクリプトがタイムコンシューミングなコードを一度だけ実行する方式で、スクリプトがロードされるたびに実行されるのを防ぎ、オーバーヘッドを軽減します。

情報

このDockerfileは、Lagoon内での任意のPHPニーズの基盤として使用することを目的としています。このイメージ自体はウェブサーバーを作成せず、php-fpm fastcgiリスナーを作成します。php-fpmプール設定を適応させる必要があるかもしれません。

サポートされているバージョン#

  • 7.3 (互換性を保つためのみに利用可能、公式サポートは終了) - uselagoon/php-7.3-fpm
  • 7.4 (互換性を保つためのみに利用可能、公式サポートは終了) - uselagoon/php-7.4-fpm
  • 8.0 (互換性を保つためのみに利用可能、公式サポートは終了) - uselagoon/php-8.0-fpm
  • 8.1 Dockerfile (2024年11月までのセキュリティサポート) - uselagoon/php-8.1-fpm
  • 8.2 Dockerfile (2025年12月までのセキュリティサポート) - uselagoon/php-8.2-fpm
  • 8.3 Dockerfile (2026年12月までのセキュリティサポート) - uselagoon/php-8.3-fpm

すべてのPHPバージョンはそれぞれのDockerfilesを使用します。

ヒント

End of Life (EOL) PHP画像の更新は通常、公式に発表されたEOL日付の後のLagoonリリースで停止します:https://www.php.net/supported-versions.php。以前に公開されたバージョンは利用可能なままとなります。

Lagoonの適応#

このイメージはLagoonで使用するために準備されています。そのため、すでにいくつかのことが行われています:

  • フォルダの権限はfix-permissionsで自動的に適応されますので、この画像はランダムなユーザーで動作します。
  • /usr/local/etc/php/php.ini および /usr/local/etc/php-fpm.conf、および /usr/local/etc/php-f pm.d/は、コンテナエントリーポイントを経由してenvplateで解析されます。
  • インストールされている PHP 拡張機能については、Dockerfileを参照してください。
  • さらなる拡張機能をインストールするには、このイメージからDockerfileを拡張します。ドキュメントに従って拡張機能をインストールしてください。見出しHow to install more PHP extensions.を参照。

含まれるPHP設定#

含まれる PHP 設定には、PHP プール設定の作成を容易にする合理的な値が含まれています。以下にいくつかを挙げます。すべてについては /usr/local/etc/php.ini/usr/local/etc/php-fpm.conf を確認してください:

詳細
max_execution_time = 900 PHP_MAX_EXECUTION_TIME で変更可能。
realpath_cache_size = 256k 大規模なPHPプロジェクトのため。
memory_limit = 400M 大規模なPHPプロジェクトのため(PHP_MEMORY_LIMIT で変更可能)。
opcache.memory_consumption = 265 大規模なPHPプロジェクトのため。
opcache.enable_file_override = 1opcache.huge_code_pages = 1 高速なPHPのため。
display_errors = Offdisplay_startup_errors = Off 実用的な生産値の場合 (PHP_DISPLAY_ERRORS および PHP_DISPLAY_STARTUP_ERRORS を介して変更可能)。
upload_max_filesize = 2048M 大きなファイルのアップロード用。
apc.shm_size = 32mapc.enabled = 1 PHP_APC_SHM_SIZE および PHP_APC_ENABLED を介して変更できます。

また、php-fpm のエラー ログは stderr に記録されます。

💡 これらの設定のいずれも気に入らない場合は、次の 3 つの方法があります:

  1. 環境変数で変更可能な場合は、環境変数を使用します (これが推奨される方法です。以下の 環境変数の表 を参照してください)。
  2. 独自の fpm-pool 設定を作成し、php_admin_value および php_admin_flag で設定します。 1. 詳細については、PHP を Apache モジュールとして実行するためのこのドキュメント を参照してください。このドキュメントは Apache について説明していますが、php-fpm にも当てはまります。

重要:

  1. 独自の php-fpm プールを提供する場合は、ファイル /usr/local/etc/php-fpm.d/www.conf を独自の設定で上書きするか、別の名前にしたい場合はこのファイルの名前を変更します。これを行わないと、提供されたプールが起動します。
  2. PHP_INI_SYSTEM変更可能モードを持つPHPの値は、fpm-pool設定を介して変更できません。すでに提供されている環境変数または以下の方法で変更する必要があります:
  3. 独自のphp.iniまたはphp-fpm.confファイルを提供します(これは最も好ましくない方法です)。

デフォルトのfpm-pool#

このイメージは、fpm-pool設定(php-fpm.d/www.conf)が付属しており、fpm-poolを作成し、ポート9000でリッスンします。これは、PHPのほとんどのニーズをすでにカバーしているイメージを提供しようとしているためです。もし好きなら、自分自身で作成することも歓迎します!

このファイルが何をするかの短い説明:

  • IPv4とIPv6でポート9000でリッスンします。
  • pm dynamicを使用し、2-50の子を作成します。
  • メモリリークを防ぐために、500のリクエスト後にphp-fpmプールの子を再生成します。
  • /pingへのfastcgiリクエストにpongで応答します(プールが起動したかどうかを自動テストで確認するのに便利)。
  • PHPのエラーを見るためにcatch_workers_output = yes
  • clear_env =を使用して、通常のDocker環境変数経由でPHP環境変数を注入できます。

環境変数#

一部のオプションは環境変数経由で設定可能です。

環境変数 デフォルト 説明
NEWRELIC_ENABLED false NewRelicのパフォーマンスモニタリングを有効にします。NEWRELIC_LICENSEの設定が必要です。
NEWRELIC_LICENSE (未設定) 使用するNewRelicのライセンス。重要:NewRelicを有効にするにはNEWRELIC_ENABLEDtrueに設定する必要があります。
NEWRELIC_BROWSER_MONITORING_ENABLED true これにより、NewRelicのブラウザモニタリングのためのJavaScriptフラグメントの自動挿入が有効になります。 . 重要:NEWRELIC_ENABLEDはNewRelicを有効にするためにtrueに設定する必要があります。
NEWRELIC_DISTRIBUTED_TRACING_ENABLED false これにより分散トレーシングが有効になります。重要:NEWRELIC_ENABLEDはNewRelicを有効にするためにtrueに設定する必要があります。
PHP_APC_ENABLED 1 APCを無効にするために0に設定することができます。
PHP_APC_SHM_SIZE 32m 与えられた各共有メモリセグメントのサイズ。
PHP_DISPLAY_ERRORS Off エラーが表示されるか非表示にされるかを設定します。php.netを参照してください
PHP_DISPLAY_STARTUP_ERRORS Off スタートアップエラーが表示されるか非表示にされるかを設定します。php.netを参照してください
PHP_ERROR_REPORTING Production E_ALL & ~E _DEPRECATED & ~E_STRICT 開発: E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE PHPが使用するログレベルを設定します。php.netを参照
PHP_FPM_PM_MAX_CHILDREN 50 子プロセスの最大数。php.netを参照
PHP_FPM_PM_MAX_REQUESTS 500 各子プロセスが再生成される前に実行するべきリクエストの数。php.netを参照
PHP_FPM_PM_MAX_SPARE_SERVERS 2 アイドル状態のサーバープロセスの最大数を設定します。php.netを参照
PHP_FPM_PM_MIN_SPARE_SERVERS 2 アイドル状態のサーバープロセスの最小数を設定します。php.netを参照
PHP_FPM_PM_PROCESS_IDLE_TIMEOUT 60s アイドルプロセスが強制終了されるまでの秒数。php.netを参照
PHP_FPM_PM_START_SERVERS 2 起動時に作成される子プロセスの数。 php.netを参照
PHP_MAX_EXECUTION_TIME 900 各スクリプトの最大実行時間(秒)。 php.netを参照
PHP_MAX_FILE_UPLOADS 20 同時にアップロードできるファイルの最大数。 php.netを参照
PHP_MAX_INPUT_VARS 2000 受け入れ可能な入力変数の数。 php.netを参照
PHP_MEMORY_LIMIT 400M スクリプトが消費できるメモリの最大量。 php.netを参照
XDEBUG_ENABLE (設定なし) xdebug 拡張機能を有効にするには、trueに設定します。
BLACKFIRE_ENABLED (設定されていません) blackfire 拡張機能を有効にするには true に設定します。
BLACKFIRE_SERVER_ID (設定されていません) Blackfire.io から提供されている Blackfire サーバー ID に設定します。BLACKFIRE_ENABLEDtrue に設定する必要があります。
BLACKFIRE_SERVER_TOKEN (設定されていません) Blackfire.io から提供されている Blackfire サーバートークンに設定します。BLACKFIRE_ENABLEDtrue に設定する必要があります。
BLACKFIRE_LOG_LEVEL 3 blackfire エージェントのログレベルを変更します。利用可能な値:ログの冗長性レベル (4: デバッグ, 3: 情報, 2: 警告, 1: エラー) blackfire.ioを参照