Help us understand the problem. What is going on with this article?

【PHP】PHPをインストールしたらやっておきたい設定

More than 5 years have passed since last update.

前提

CentOS6.5で動作確認をしています。
初心者を想定して記述しているドキュメントとなっています。
開発用サーバとして動かすこと前提に記述しています。
※ 上記初心者対象という事由により、PHPのバージョンはCentOSデフォルトでyum installできるPHP5.3.3を対象にしています。
※ 既に5.3系のPHPがオフィシャルサポート終了になっているのは承知のうえで、設定上の大きな変更はないものに絞って記述しています。

PHPをインストール

# yum install php php-devel php-pear php-mbstring php-gd php-mysql php-xml php-mcrypt -y   # php関連の基本ファイルをインストール

PHPの設定を編集

PHPの設定は/etc/php.iniという設定ファイルによって行われています。
そのため、下記ではphp.iniというファイルを編集することによって、PHPの設定を変更していきます。

オリジナルphp.iniをバックアップ

# cp /etc/php.ini /etc/php.ini.origin   # デフォルトで生成されているphp.iniファイルをphp.ini.originというファイル名でコピーファイルを作成

エラー表示の設定を変更

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

変更した設定を読み込み

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

# service httpd restart

まとめ

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

knife0125
東南アジアでスタートアップする会社のお手伝いとかをしています。 FabLabなどのアジアの活動の支援もしています。 フィリピン人の優秀なエンジニアの採用・管理などの経験もあります。
http://knife0125.net
awesome_ars_academia
アジアに5ヶ国7拠点1300人で活動するソフトウェア・アプリ開発会社が提供する「英語」と「プログラミング」が学べるグローバルテックスクール。アジア各国の大学へIT教育も提供し、年間に育成するエンジニアは1000名以上。21世紀を変えるテクノロジーを多国籍環境で学べるグローバルテックスクールです。
https://awesome-ars-academia.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした