PHPのテスト | サーバ構築時に確認すること

PHPをインストールしたときにデフォルトで設定されていることではいろいろ制限があったりします。   また、サーバ移行をした際に前と設定が違うから動かないよ!とかなったら大変ですね。

今回は以下の確認・設定をしていきます

  • アップロード容量の確認・設定
  • 使用可能メモリの確認・設定
  • apc, opcacheが有効になっていること
  • レスポンスヘッダーにPHPのバージョンをださない

PHP7.2系を使って行っていきます。
phpinfoを使うと視覚的にわかりやすいので、確認はこれを使います。
場所は任意ですが今回は/var/www/html/info.phpとします。
中身は以下の通り

<?php
phpinfo();

これでインスタンスのIP/info.phpにアクセスすると色々情報が見れます。
情報が見れるということは、悪意ある人がこれを見た場合、アタックに使われる可能性があるので、確認が終わったらなるべく早く削除しましょう。

PHPのメモリサイズ変更時の注意

PHPのメモリサイズを変更するときは
memory_limit > post_max_size > upload_max_filesize とする必要があります。

いくらアップロードメモリを増やしてもそもそもPHP側で使えるメモリが足りてなかったら意味ないですもんね。
これに注意して設定していきます。

POSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。 一般的に memory_limit は、 post_max_sizeよりも大きく する必要があります。 https://www.php.net/manual/ja/ini.core.php#ini.post-max-size

アップロード容量の確認・設定|使用可能メモリの確認・設定

ファイルアップロードをする際にこの設定より大きいファイルをアップロードしようとするとエラーが出てしまいます。
例えばWordPressに画像をアップロードするときにここに表示されている容量より大きいファイルはアップロードできません。
確認していきます。

phpinfoを使う

phpinfoを使うときはmacはcommand + f で検索ができる(Windowsは Ctrl + f)ので検索してきましょう。

memory_limit
post_max_size
upload_max_filesize

Directiveサイズ
memory_limit128M
post_max_size8M
upload_max_filesize2M

もしサーバ移行した際に指定がなければ、移行元と同じになっているかを確認しましょう。

初期状態はとても低いですね。
変更していきましょう

変更は/etc/php.iniで行っていきます。

php.iniの編集

設定ファイルを編集する前には必ずバックアップを取るようにしましょう 今回は以下のようにしました。

$ sudo vi /etc/php.ini

memory_limit = 128M

post_max_size = 64M

upload_max_filesize = 32M

編集したら、Apacheを再起動しましょう。
再度info.phpにアクセスして確認すると、変更されているはずです。

apc, opcacheが有効になっていること

apc, opcacheとはPHPの初回実行時に、PHPの内容を最適化し、それをキャッシュしておき次回以降それを使うことで、高速化やCPUの負荷の軽減を行います。

まずはインストールしていきます。今使っているサーバはremiリポジトリを利用してPHPをインストールしているので今回もそれでインストールしていきます。

$ sudo yum -y install --enablerepo=remi,remi-php72 php-opcache php-pecl-apcu
php -v
PHP 7.2.29 (cli) (built: Mar 17 2020 11:36:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.29, Copyright (c) 1999-2018, by Zend Technologies

これでOPcacheが動作しているか確認できます。

phpinfo()でも確認できます。 Apacheの再起動を行ってから確認しましょう。

レスポンスヘッダーにPHPのバージョンをださない

これが見えてしまうとphpinfo()と同様に悪意ある人がそのバージョンの脆弱性などをついてアクセスしてくるかもしれません。
例えばこんな感じ

ばっちり書いてありますね。
なんならApacheのバージョンまで書いてあります。(が今回はPHPの設定なのでとばします)

確認方法は適当なphpファイルを作成して、右クリック > 検証 > NetWork > 該当のファイルをクリック > Headers から確認できます。

php.iniの編集

またまたphp.iniの編集です。

$ sudo vi /etc/php.ini

expose_php=Off

OnからOffにします。

再度アクセスするとPHPのバージョンが消えているのが確認できると思います。