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_limit | 128M |
post_max_size | 8M |
upload_max_filesize | 2M |
もしサーバ移行した際に指定がなければ、移行元と同じになっているかを確認しましょう。
初期状態はとても低いですね。
変更していきましょう
変更は/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のバージョンが消えているのが確認できると思います。