6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[関数系] php.iniで設定できる内容 (set_include_path, ini_set)

Last updated at Posted at 2018-08-01

概要

php.iniでできる内容を把握しておかないとphp.ini以外で余計な設定をしてしまうというリスクがある。そのため、その内容をまとめておく。

php.iniとは

そもそもの話だが、php.iniとはphpの設定を一手に担うファイルのことである。

どこにあるのか

基本的には「/etc/php.ini」となっているが、設定することもできるので場合によっては違うことも疑う必要がある。

php -r "echo phpinfo();" | grep "php.ini"

いつ読み込まれるのか

これはCGI版とmodule版でおそらく(まだ確かめてないのでそのうち更新)違う。

module版

これはApacheが起動したタイミング。であるため、
後述のとおり、php.iniが変更されるたびにApacheの再起動が必要となる。

CGI版

CGI 版と CLI 版では、スクリプトが呼び出される度に読み込まれる。
これは公式にも書いてある。

CGI版とmodule版で違いはあるのか

またモジュール版のメリットとして、WebサーバーのプロセスでPHPが実行されるため、CGI版に比べて動作速度が高速になるという点がある。

何を設定できるのか

エラー表示の設定を変更

  • error_reportingの設定を変更(513行目あたり)
    error_reporting = E_ALL | E_STRICT (開発環境においてはSTRICTを含めたすべてのレポートをさせる)

  • display_errorsの設定を変更(530行目あたり)
    display_errors = On (エラーがあった際にブラウザなどにエラー内容を表示するように設定)

  • log_errorsの設定を変更(551行目あたり)
    log_errors = On (エラーログを吐く設定を有効にしておく)

  • error_logの設定を変更(636行目あたり)
    error_log = /var/log/php.log(phpに関連するエラーログを/var/log/php.logに吐くように設定)

文字コード関連の設定

  • default_charset = "UTF-8"
  • mbstring.language = Japanese
  • mbstring.internal_encoding = UTF-8
  • mbstring.encoding_translation = Off
  • mbstring.http_input = pass
  • mbstring.http_output = pass
  • mbstring.detect_order = auto

メモリ管理に関する設定

  • memory_limit = 32MB
    PHPの1プロセスが利用可能なメモリー容量の設定。
  • post_max_size = 16M
    POSTのリクエストを受け付ける際の、最大のPOSTリクエストサイズを設定
  • upload_max_filesize = 8M
    ファイルアップロードを受け付ける際の、最大のファイル受付サイズを設定

セキュリティに関する設定

  • expose_php = Off
    これがOnだとレスポンスヘッダにPHPのバージョン情報などが露呈してしまう
  • session.hash_function = 1
    セッションID発行のハッシュアルゴリズムをSHA-1(160bit)へ変更, 0だとMD5(128bit)。生成されたハッシュを32桁にしたい場合は、併せてsession.hash_bits_per_character = 5とする
  • session.entropy_file = /dev/urandom
    /dev/urandomが存在するときのみ
  • session.entropy_length = 32

その他の設定

  • short_open_tag = Off
    PHPファイルのタグをのみ利用可能と制限( ?>などを使用不可にする)
  • register_argc_argv = On
    バッチのようなコマンドラインプログラムを書く場合は必須の設定
  • max_execution_time = 30
    PHPプログラムの1つの最大実行時間の設定。これも大きなファイルアップロードや大きいバッチ処理がある場合はプログラム側のini_set()などで随時設定する

変更した設定を読み込み

module版

php.iniでの設定はApacheを再起動することによって再読込されるので、Apacheを再起動します。

service httpd restart

CGI版

CGI 版と CLI 版では、スクリプトが呼び出される度に読み込まれるため、もう一度スクリプトが呼び出すだけで良い。これは公式にも書いてある。

パスを複数設定したい場合

.:/usr/dir/dir2/dir3.:/usr/dir_a/dir_b/dir_b 

上記のように「:」(コロン)で区切って記述する。

ソースコードにおける設定内容

 set_include_pathメソッドかini_setメソッドを利用することでソースコードからもinclude_pathを設定することができる。

set_include_path

set_include_pathの例
string set_include_path ( string $new_include_path )

成功した場合には追加したinclude_pathの値
失敗した場合にはFALSEを返す

ini_set

ini_setの例
ini_set('include_path', '/usr/lib/pear');

まとめ

上記でPHPをインストールし、開発環境として利用する上での最小限の設定は完了です。
詳細な設定内容についてはより調べていただくか、『パーフェクトPHP』の12章などに詳しいので、参考にしてみてください。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?