投稿日時:

今回はPHPプログラミングに関するお話です。

・自分のPCで作成したPHPファイルを、Webサーバ(レンタルしているサーバなど)にアップロードして配置する。
・同じファイル、同じソースコードなのに、自分のPCとレンタルサーバでは実行結果が異なる。

実はこれ、良くある話です。
なぜか? 答えは簡単で、自分のPCとレンタルサーバの「環境」が異なるからです。

・WindowsとLinuxでOSの設定が違う。
・IISとApacheでWebサーバの設定が違う。

違いを挙げれば多岐に渡りますが、中でも「PHPの設定が違う」ことによる要因は多く見られます。

PHPの設定には設定ファイル「php.ini」を使用します。
テキストエディタで開いて中を見てみましょう。

error_reporting = 値

error_reportingはエラーメッセージ、警告メッセージの設定です。
警告メッセージが出たり、出なかったりするのはここの設定になります。

参考:PHPマニュアル「定義済み定数」

magic_quotes_gpc = 値

マジッククォートの設定です。
マジッククォートは$_GET、$_POST、$COOKIEで取得する文字列内の’(シングルクオート)、” (ダブルクオート)、\(バックスラッシュ) 、NULLを自動的にエスケープする機能になります。
例を挙げると、入力フォームに「”abc”」と入力して送信し、$_GETや$_POSTで取得すると「\”abc\”」と変換されるような機能になります。
Onであればマジッククォート有効、Offであれば無効となっています。

参考:PHPマニュアル「実行時設定」

エスケープされる事を想定しているソースコードと想定していないソースコードでは、実行結果が異なるのも当たり前ですね。

レンタルサーバではphp.iniが参照できない環境もあります。
その場合はphpinfoを使用する事で確認できます。確認するだけで変更はできませんが、どの様な設定かどうかがわかるだけでも意味がありますね。

今回はerror_reportingとmagic_quotes_gpcの2点をご紹介しました。
PHPプログラミングの学習とは、ソースコードを書くだけでなく、設定を理解する事も含まれると心得ていただければと思います。

(担当:奥田 英太郎