PHPの動作環境は、php.iniファイルに設定されています。もし、PHPの制限でWebシステムが正常に動作しなかったら、php.iniファイルを探してその設定を変更すれば正常に動作します。
とはいえphp.iniファイルの編集方法が分らないという方もおられるでしょう。そこで今回はphp.iniファイルの探し方と編集方法について解説します。
目次
PHPの設定は変えられる
PHPでWebシステムを構築する場合、Linuxなどのサーバーに標準のパッケージで用意されているPHPをインストールし、それをそのまま使おうとしてはいないでしょうか。
CentOSやUbuntuなどのLinuxサーバーに標準でインストールできるPHPは、ほとんどのWebサーバーで問題なくで動作するように設定されています。しかし、その設定ではこれから作るWebサービスによって不十分ということもあります。
次にPHPの設定を変更する方法を紹介します。
サーバーで設定するならphp.iniファイルに
PHPにはデフォルトの設定をファイルに登録しておく機能があります。そして、その設定を記述しておくファイルがphp.iniファイルです。
例えば、phpのデフォルトの文字コードを英語に設定できたり、日本語の文字コードのUTF-8やSJISも設定できます。デフォルトの文字コードをUTF-8にしたい場合、php.iniにその設定を記述してください。これでPHPのプログラムの中でUTF-8の日本語が扱えます。
なお、php.iniファイルは、PHPをインストールする際に作成されます。もし、CentOSなどのLinuxで既にPHPが使えるのなら、php.iniファイルに記載されたPHPが設定で動作していると考えてください。
PHPの関数でも設定できる
先ほどphp.iniにデフォルトの設定を記述する方法を紹介しましたが、PHPの中で使われる多くの設定は、プログラムの中の関数でも設定できます。
php.iniでデフォルトを設定してあっても、Webシステムの仕様によっては別の設定を使いたいケースもあるでしょう。そのようなケースではプログラムの中で関数を用いて設定を変更できます。
とはいえ、共通の設定をphp.iniファイルに記述しておき、毎回プログラム内の関数で設定を変更する必要がないようにしましょう。
php.iniはテキストファイル
今回取り上げるphp.iniは、PHPのデフォルトの設定を簡潔に記述したテキストファイルです。そのためOSに付属したテキストエディタなどで簡単に編集できます。
ただし、php.iniを間違えて編集してしまうとPHPが正常に動作しません。そこで、ターミナルなどのシェルで次のコマンドを実行し、php.iniファイルをチェックしてください。
$ php -c php.ini
phpをターミナルから実行する方法は、こちらの記事を参考にしてください。
PHPをコマンドラインで実行する方法について詳しく解説!
php.iniを編集するには
先ほど、PHPのプログラムで使用するデフォルトの設定をphp.iniに記述できるを説明しました。では具体的にどう書けば設定として反映されるでしょうか。次から、php.iniファイルの編集方法について解説します。
php.iniファイルはどこにある?
php.iniファイルを編集したくても、どこにあるか解らないと編集できません。どはどうやって探せばいいのでしょうか。phpには設定情報を表示する機能があり、そのコマンドを利用して表示した一覧の中にphp.iniファイルの場所も含まれています。
Linuxでphp.iniファイルを探すコマンドの実行例
1 2 3 |
$ echo "<?php phpinfo(); ?> | php | grep php.ini Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini |
ただし、次のように複数の設定ファイルに分かれている場合もあります。その場合はWebサーバーの仕様に合わせて適切なphp.iniファイルを編集しなければなりません。
Ubuntuに標準でインストールできるPHPのphp.iniファイルの例
/etc/php/7.4/cli/php.ini
(ターミナルからPHPを使う場合に参照するphp.ini)
/etc/php/7.4/apach2/php.ini
(apache httpdからPHPを実行する場合に参照するphp.ini)
/etc/php/7.4/fpm/php.ini
(php-fpmでPHPを実行する場合に参照するphp.ini)
この設定で例えばphp-fpmを利用しWebサーバーでPHPを実行している場合、/etc/php/7.4/fpm/php.iniを編集します。
php.iniはroot権限で編集
php.iniファイルの所有者はrootで、しかもrootしか書き込み権限がありません。php.iniファイルを編集するなら、必ず管理者で編集してください。
1 2 |
$ ls -al php.ini -rw-r--r--. 1 root root 63250 xxxx xx:xx php.ini |
なお、php.iniファイルはテキストファイルなので、LinuxならviやemacsなどのOS付属のテキストエディタで編集できます。
php.iniの内容をチェックするには
php.iniファイルに登録された内容をチェックするには、phpinfo関数を使います。
ただし、先ほど紹介したUbuntuのようにターミナルで実行するPHPとWebサーバーから実行するPHPが違う場合は、それに合わせて編集しなければなりません。そのため、Webサーバーから実行するPHP用のphp.iniを編集したら、必ずWebブラウザでチェックしてください。
Webブラウザでphp.iniをチェックするためのスクリプトの例
1 |
<?php phpinfo(); ?> |
上記ファイルをinfo.phpなどの拡張子がphpのファイルを用意し、このファイルをブラウザで表示してください。
見直してほしいphp.iniの設定
WebサーバーでPHPを利用する場合、運用するシステムに合わせてphp.iniの設定を見直しが必要です。とはいえ、サーバー設定に慣れていない方にとっては、どこを修正すればよいか解らないかもしれません。
そこで、サーバー管理初心者にも分かりやすく、php.iniの設定で見直ししてほしい箇所を紹介します。
ファイルをアップロードする最大値
ファイルをアップロードして利用者に見てもらうWebサービスをよく見かけます。アップロードするファイルにはPDFの文書や画像など大きなサイズのファイルを掲示しているサイトも珍しくありません。
そのような大きなファイルをアップロードする仕組みをPHPで作成する場合、php.iniのファイルをアップロードする最大値の見直しが必要です。
具体的にはphp.iniファイルの「upload_max_filesize」でアップロードファイルの最大値を設定できます。デフォルトのサイズは2Mに設定されているので、大きなファイルを扱う場合は、この値に大きな値を設定してください。
ファイルをアップロードする最大値を大きくする例
(修正前)
upload_max_filesize = 2M
(修正後)
upload_max_filesize = 20M
エラー表示の設定
HPのエラーメッセージやワーニングメッセージをWebページに表示できる機能があるのをご存じでしょうか。本番環境ではそのようなメッセージを非表示にし、デバック環境ではメッセージを表示する、といった設定が可能です。
エラーメッセージの表示・非表示の設定は、「display_errors」で設定します。必要に応じて設定を変更してください。
エラーメッセージを表示する設定
display_errors = On
エラーメッセージを表示しない設定
display_errors = Off
ログファイルを設定する
PHPの動作状況を専用のログファイルに出力させて、PHPで動作しているWebシステムの動作を監視することが可能です。この場合php.iniファイルにログファイルへの出力設定とログファイルの指定が必要です。
なお、エラーをログファイルに出力するには、先ほど紹介したエラーメッセージを表示する設定「display_errors = On」が必要です。
ログファイルの設定例
1 2 3 |
display_errors = On log_errors = On error_log = /var/log/php.log |
上の例は、ログファイル「/var/log/php.log」にPHPの実行ログを出力するための設定です。
php.iniの変更を反映する
Webシステムで使われているPHP用のphp.iniファイルで、その設定を変更したからといって、それがすぐに反映されるとは限りません。httpdからPHPを利用している場合はhttpdサービスを、また、PHP-FPMを利用している場合はそのサービスの再起動が必要です。
もし、php.iniファイルを編集したら、すぐにサービスも再起動して変更を反映してください。
まとめ
PHPのデフォルトの設定を記述しておくファイルがphp.iniファイルです。このファイルはインストール環境によっても違うので、今回紹介したコマンドなどを利用して、ファイルの場所を確認してください。
そして、php.iniファイルを編集することで、アップロードするファイルのサイズを拡大したり、エラーメッセージなどのログファイルを設定できたりします。
PHPを使ったWebシステムを開発するなら、その環境に合わせてphp.iniの設定を変えられるようになりましょう。