PHP
php.ini is the main configuration file that determines PHP's behavior and settings.
php.ini
php.iniとは
php.iniは、PHP(Hypertext Preprocessor)のメイン設定ファイルであり、PHPの動作や機能を制御するためのさまざまな設定項目(ディレクティブ)が含まれています。このファイルを編集することで、PHPのパフォーマンス、セキュリティ、機能性を調整することができます。
php.iniの場所
php.iniの場所は、PHPのインストール方法やオペレーティングシステムによって異なります。一般的な場所は以下の通りです。
- Linux/Unixの場合
-
- /etc/php.ini
- /etc/php/7.4/apache2/php.ini(バージョンや使用しているウェブサーバーによって異なる)
- Windowsの場合
-
- C:\php\php.ini
- PHPがインストールされたディレクトリ内
現在使用している php.iniの場所を確認するには、phpinfo()関数を使用して出力された情報内の「Loaded Configuration File」を参照してください。
php.iniの主な設定項目
php.iniには多数の設定項目がありますが、以下は特によく使用される重要なディレクティブです。
- memory_limit
-
- PHPスクリプトが使用できる最大メモリ量を指定します。
- 例:memory_limit = 256M
- max_execution_time
-
- スクリプトの最大実行時間(秒)を設定します。
- 例:max_execution_time = 30
- error_reporting
-
- エラーレポートのレベルを設定します。
- 例:error_reporting = E_ALL & ~E_NOTICE
- display_errors
-
- エラーメッセージをブラウザに表示するかどうかを制御します。
- 例:display_errors = Off
- log_errors
-
- エラーメッセージをログファイルに記録するかどうかを設定します。
- 例:log_errors = On
- upload_max_filesize
-
- アップロード可能なファイルの最大サイズを指定します。
- 例:upload_max_filesize = 10M
- post_max_size
-
- POSTリクエストで許可される最大サイズを指定します(ファイルアップロードを含む)。
- 例:post_max_size = 12M
- date.timezone
-
- デフォルトのタイムゾーンを設定します。
- 例:date.timezone = Asia/Tokyo
- session.save_path
-
- セッションデータを保存するディレクトリを指定します。
- 例:session.save_path = "/var/lib/php/sessions"
php.iniの編集方法
- バックアップの作成
- 編集前に現在のphp.iniファイルのバックアップを取ります。
- テキストエディタで開く
- 任意のテキストエディタ(例:Vim、Nano、Notepad++)で php.iniを開きます。
- 設定の変更
- 必要なディレクティブを検索し、値を変更します。
- ディレクティブがコメントアウトされている場合(;で始まる)、コメントを外します。
- ファイルの保存
設定の反映
php.iniを編集した後、変更を反映させるために PHPを再起動する必要があります。ウェブサーバーと連携している場合は、ウェブサーバー自体の再起動が必要になることもあります。
- Apacheの場合
- コマンド:sudo systemctl restart apache2
- NginxとPHP-FPMの場合
- コマンド:sudo systemctl restart php7.4-fpm(バージョンに応じて変更)
設定の確認
変更が正しく反映されているか確認するために、phpinfo()関数を使用します。
このスクリプトを実行すると、現在の PHP設定がすべて表示されます。
セキュリティ上の注意点
- display_errorsをOffに設定
-
- 本番環境では、エラーメッセージがユーザーに表示されるとセキュリティリスクになります。
- display_errors = Off
- 適切なエラーロギング
-
- エラーをログに記録し、問題のトラブルシューティングに役立てます。
- log_errors = On
- error_log = /var/log/php_errors.log
- ファイルアップロードの制限
-
- 不正なファイルのアップロードを防ぐため、必要最低限のサイズに設定します。
パフォーマンスの最適化
- OPcacheの有効化
-
- スクリプトの実行速度を向上させます。
- opcache.enable = 1
- メモリリミットの適切な設定
-
- 高負荷なスクリプトには十分なメモリを割り当てますが、サーバー全体の安定性も考慮します。
マルチPHP環境での注意
サーバーに複数の PHPバージョンがインストールされている場合、バージョンごとに php.iniが存在します。正しいバージョンの php.iniを編集するよう注意が必要です。
その他の設定
- extensionディレクティブ
-
- 必要なPHP拡張モジュールを有効化または無効化します。
- 例:extension=mysqli
- include_path
-
- PHPがファイルを検索するディレクトリを指定します。
- 例:include_path = ".:/usr/share/php"
まとめ
php.iniは PHPの動作全般を制御する非常に重要なファイルです。適切な設定を行うことで、アプリケーションのパフォーマンス向上やセキュリティ強化が可能となります。設定変更の際は、必ずバックアップを取り、変更内容を慎重に検討してください。