PHP

この記事では「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の編集方法

  1. バックアップの作成
    • 編集前に現在のphp.iniファイルのバックアップを取ります。
  2. テキストエディタで開く
    • 任意のテキストエディタ(例:Vim、Nano、Notepad++)で php.iniを開きます。
  3. 設定の変更
    • 必要なディレクティブを検索し、値を変更します。
    • ディレクティブがコメントアウトされている場合(;で始まる)、コメントを外します。
  4. ファイルの保存
    • 変更を保存し、エディタを閉じます。

設定の反映

 php.iniを編集した後、変更を反映させるために PHPを再起動する必要があります。ウェブサーバーと連携している場合は、ウェブサーバー自体の再起動が必要になることもあります。

Apacheの場合
コマンド:sudo systemctl restart apache2
NginxとPHP-FPMの場合
コマンド:sudo systemctl restart php7.4-fpm(バージョンに応じて変更)

設定の確認

 変更が正しく反映されているか確認するために、phpinfo()関数を使用します。

PHP

<?php
	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の動作全般を制御する非常に重要なファイルです。適切な設定を行うことで、アプリケーションのパフォーマンス向上やセキュリティ強化が可能となります。設定変更の際は、必ずバックアップを取り、変更内容を慎重に検討してください。