PHPのセキュリティや運用の観点から最低限行うべき設定
PHPの設定をする上で、セキュリティや運用の観点から最低限行うべき設定を説明する。PHPのインストール
ここでは、DBとしてMysqlを利用し、マルチ言語対応するためmbstringを使うため、PHPモジュールとして php-mysqlとphp-mbstringを合わせてインストールする。# yum install php php-mysql php-mbstring
ApacheにPHPモジュールをロードする
php関連の設定がまとめられたphp.confファイルをインクルードする。# vi /etc/httpd/conf.d/httpd-vhosts.conf
## PHP5 #### Include /etc/httpd/conf.d/php.conf
PHPログ関連の設定
ログ関連の設定内容# vi /etc/php.ini
;省略 error_reporting = E_ALL & ~E_NOTICE display_errors = Off display_startup_errors = Off log_errors = On error_log = syslog ;省略
文字コードの設定
アプリチームに確認し、文字コード関連の設定を行う。以下は設定例である。# vi /etc/php.ini
[PHP] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = pass mbstring.detect_order = auto mbstring.substitute_character = none default_charset = "UTF-8" ;省略
PHPセキュリティ設定
PHPセキュリティ関連の設定内容# vi /etc/php.ini
;省略 register_globals = Off expose_php = Off session.use_only_cookies = 1
その他のセキュリティ関連の設定内容
・外部の任意のスクリプトを実行される危険性回避# vi /etc/php.ini
;省略 allow_url_fopen = Off session.hash_function = 1 open_basedir = /usr/share/:/var/www/
PHPのSession設定
Linuxの場合、一つのディレクトリの配下に10000個から15000個程度のファイルを作成することが出来ますが、実際には5000個もファイルを作成するとディスクI/Oの性能が落ち、ファイル読み書きのパフォーマンスが落ちてしまいます。 大量のアクセスがあると、一つのディレクトリに大量のSESSIONファイルを作成する事になり、上記の理由から結果的にレスポンスが落ちる事に繋がってしまいます。# vi /etc/php.ini
session.save_path = "2;/var/lib/php/session"
# sh create_dir.sh /var/lib/php/session/ 2
備考
create_dir.sh#! /bin/sh #実行例 #sh mod_files.sh /var/lib/php/session 2 if test "$2" = ""; then echo "usage: $0 basedir depth" exit 1 fi if test "$2" = "0"; then exit 0 fi for i in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9; do newpath="$1/$i" mkdir $newpath || exit 1 sh $0 $newpath `expr $2 - 1` done
# crontab -e
*/10 * * * * find /var/lib/php/session -type f -mmin +30 -exec rm -f {} \;
PHPに関連する記事
・Apache構築手順【基本設定】PHPに関するおすすめ書籍
即戦力になるための PHPシステム開発の教科書 |
CakePHP2.6 ビギナーズガイド: PHPフレームワークをハックせよ! PRIMERシリーズ |