今回はPHPプログラミングに関するお話です。
・自分のPCで作成したPHPファイルを、Webサーバ(レンタルしているサーバなど)にアップロードして配置する。
・同じファイル、同じソースコードなのに、自分のPCとレンタルサーバでは実行結果が異なる。
実はこれ、良くある話です。
なぜか? 答えは簡単で、自分のPCとレンタルサーバの「環境」が異なるからです。
・WindowsとLinuxでOSの設定が違う。
・IISとApacheでWebサーバの設定が違う。
違いを挙げれば多岐に渡りますが、中でも「PHPの設定が違う」ことによる要因は多く見られます。
PHPの設定には設定ファイル「php.ini」を使用します。
テキストエディタで開いて中を見てみましょう。
error_reportingはエラーメッセージ、警告メッセージの設定です。
警告メッセージが出たり、出なかったりするのはここの設定になります。
参考:PHPマニュアル「定義済み定数」
マジッククォートの設定です。
マジッククォートは$_GET、$_POST、$COOKIEで取得する文字列内の’(シングルクオート)、” (ダブルクオート)、\(バックスラッシュ) 、NULLを自動的にエスケープする機能になります。
例を挙げると、入力フォームに「”abc”」と入力して送信し、$_GETや$_POSTで取得すると「\”abc\”」と変換されるような機能になります。
Onであればマジッククォート有効、Offであれば無効となっています。
参考:PHPマニュアル「実行時設定」
エスケープされる事を想定しているソースコードと想定していないソースコードでは、実行結果が異なるのも当たり前ですね。
レンタルサーバではphp.iniが参照できない環境もあります。
その場合はphpinfoを使用する事で確認できます。確認するだけで変更はできませんが、どの様な設定かどうかがわかるだけでも意味がありますね。
今回はerror_reportingとmagic_quotes_gpcの2点をご紹介しました。
PHPプログラミングの学習とは、ソースコードを書くだけでなく、設定を理解する事も含まれると心得ていただければと思います。
(担当:奥田 英太郎)