[PHP] セーフモードについて
とある案件で、テストサーバではメール送信が行えるが、全く同じソースを本番サーバに持っていくと、メール送信処理が動かないという現象が起きた。PHPのセーフモードが原因だということはすぐ分かったのだが、ちょっとハマりそうになったので、忘れないようにメモする。
レンタルサーバ等の共有サーバでは、PHPのセーフモードを有効にしている場合があり、通常モードでは使用できる関数が、セーフモードでは制限を受けたり無効となる場合がある。影響を受ける関数の一部を例にあげると、以下のようなものがある。
- fopen()
- mkdir()
- rmdir()
- unlink()
- chmod()
- header()
- mail()
今回の件では、mb_send_mail がこの制限に引っ掛かっていた。
具体的には、セーフモードでは同関数は第5引数が無効となるが、ソースの中ではセーフモードの判定をせず、mb_send_mail で第5引数を指定していたため、メール送信が行われなかったようだ。
尚、セーフモードの判定は下記方法で行える。
if ( get_cfg_var('safe_mode') ) {
// セーフモード
} else {
// セーフモードではない
}
トラックバックURL
http://mashimonator.weblike.jp/mt/mt-tb.cgi/93
コメント投稿フォーム