[1897507] $_SERVER variables not defined on CLI

しばらく忙しいので、小物から片付けていこうかな〜と Feature Request を見ています。
今日見たのは$_SERVER variables not defined on CLI

CLIっていうのは、Command Line Interface(unixのシェルなど)で動かす PHP のことです。
一般にXOOPSなどで使われているのは CGI 版か Apache Module 版なのでCLIを使うって事は普通無いと思います。

で、CLI版で動かしたところ、$_SERVER がなかったので notice が発生した、というのがこのレポート。
$_SERVER は、apache(などウェブサーバ)の情報が入るので、apache と関係ない CLI 版では取得できない変数が多い、ということのようです。
ほかには、php.ini の variables_order でも $_SERVER がセットされるかどうか決まります。variables_order="GPCS" のように、"S"が入っていれば作られます。

このように、$_SERVER は利用できないケースがあるので、それよりも getEnv() を使って取得したほうがたいていの場合は良いようです(と gijoe さんがコメントで指摘)。
「たいていは」ってどういうことかというと、getEnv() で取得するより $_SERVER で取得するほうが負荷が少ないので、大量に getEnv() を使うとパフォーマンスが落ちる、ということのようです。とはいえそんなケースそう無いでしょう。


とまあ知った風に書いてきましたが、ぜんぜん知らなかったので以下を読んで勉強しました。

http://blog.asial.co.jp/316
http://labs.uechoco.com/blog/2007/12/php_envgetenv2.html
http://d.hatena.ne.jp/Yudoufu/20071207/1197049259
http://d.hatena.ne.jp/i_ogi/20071217/1197912203