カメノドットコム
Debian大好きでメインで節操ない感じ。
GMOもわりと好き。
RSS feedly

【PHP7】php.iniの設定

PHP7から「php.ini」の設置場所が変更になっているようです。
「/インストールパス/lib」に配置すればよかったんですが「/インストールパス/etc」になりました。
前回構築した時、地味にハマりましたよ。

---- [PR] ----
現在契約中 : GMOクラウドのVPS : お名前.com
今後契約するかも : お名前.com VPS
--------------

最初にする設定:日本向け

まずは公開用の設定ファイルである「php.ini-production」を設置場所にリネームしつつコピーします。
解凍したソースの中にあります。「/usr/local/php7」にインストールしましたので、それを念頭に置いて。

$ sudo cp php.ini-production /usr/local/php7/etc/php.ini

今回、OPcache を導入していますので、時刻、マルチバイトと一緒に設定しておきます。

$ sudo vi /usr/local/php7/etc/php.ini
; PHPのバージョン情報を隠す
expose_php = Off
; 日本時間にする
date.timezone = "Asia/Tokyo"
; マルチバイト対応
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
; OPcache 関係
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

公開サーバの設定として、PHPのバージョンを隠すようにしています。
スクリプトのテストはローカルで行いましょう。

メモリ周りの設定

メモリの設定に関しては諸説入り乱れておりますが コア php.ini ディレクティブに関する説明(post_max_size integer) によりますと。
「memory_limit ≧ post_max_size ≧ upload_max_filesize」という関係が正解のようです。
「アップロードファイルのサイズはPOSTデータのサイズに含まれ、必要メモリはそれ以上である」と超訳してみました。
ということで、アップロードファイルのサイズから決めていけばいいと思われます。
ウチはファイルアップロードとかしないので、少なめに設定します。アップロードする場合はもっとメモリが必要になります。

$ sudo vi /usr/local/php7/etc/php.ini
; 最大使用メモリ
memory_limit = 32M
; ブラウザで送信できる最大サイズ
post_max_size = 16M
; アップロードできる最大サイズ
upload_max_filesize = 8M

ぶっちゃけ、適当に設定しました。
ブログシステムを導入していて、大きな画像をアップロードしたい場合などはしっかり計算して設定してください。

セキュリティ周りとリソースの設定

エラー表示などは全てオフにしておきます。面倒でもローカルに同じ環境を構築してテストしましょう。
セッション周りは微妙です。
「session.name」を変更すると使えなくなるスクリプトもあるだろうし。
「allow_url_fopen」を切るとフィード取得とかできなくなるかもだし。
あとは出力結果を圧縮するようにしていますが、OSのリソースを喰いますので余計に遅くなる可能性もあります。
「On」「Off」両方試して速い方を採用してください。

$ sudo vi /usr/local/php7/etc/php.ini
; もはや常識
short_open_tag = Off
; スクリプトがタイムアウトするまでの秒数。短くするとメモリ節約になるかも
max_execution_time = 30
; もはや常識その2
register_argc_argv = Off
; 外部URLへのアクセス。フィード取得とかしたい場合は On で
allow_url_fopen = Off
; スクリプトのエラーメッセージを表示しない。ウェブサーバにも記録されない(オフになってるはす)
display_errors = Off
; 起動時のエラーメッセージを表示しない(オフになってるはす)
display_startup_errors = Off
; エラーメッセージにタグを含めるかどうか。「display_errors = Off」ならそもそもタグが無意味
html_errors = Off
; 初期化していないセッションIDを受け付けない
session.use_strict_mode = 1
; セッション名をわかりにくい名前に変更する
session.name = HOGEHONYA
; セッションIDをURLパラメーターに格納しない(オンになってるはず)
session.use_cookies = 1
session.use_only_cookies = 1
; セキュアな接続を通じてのみCookieを送信。HTTPとHTTPSが混在する場合はセッションを継続できないので注意
session.cookie_secure = 1
; PHPの出力をgzip圧縮
zlib.output_compression = On

「php.ini」で変更したりチェックしたりする項目はこのくらいでしょうか。
動かしながら微調整してください。
fgci + php-fpm で動かしますので、php-fpm のチューニングのほうが比重が大きくなります。

Sponsored Link