PHPをコマンドラインから実行した場合でも、 $_SERVER 変数をブラウザアクセスのときと同じように揃えておく方法はありますか?
今日までブラウザアクセスのみを前提とし、$_SERVER 変数を用いて色々な関数を組み立ててきました。
本日コマンドラインでの実行を試みたのですが、 $_SERVER 変数がブラウザアクセスの場合と異なるようで、以下のエラーになります。
php -r'require_once "/home/testserver/example.com/public_html/wp-config.php";'
[02-Apr-2022 10:53:21 UTC] PHP Notice: Undefined index: HTTP_HOST in
/home/testserver/example.com/public_html/define.php on line 63
[02-Apr-2022 10:53:21 UTC] PHP Notice: Undefined index: REMOTE_ADDR in
/home/testserver/example.com/public_html/define.php on line 154
このケースの対処法を知りたいです。
検索し【php】コマンドラインでの実行かどうか判別する を参考にしましたところ、コマンドラインか否かの切り分け方を見つけました。
そして、$_SERVER 変数は「自分が今このChromeでアクセスした場合」のみを考えておりますので、可変的にする必要はございません。
よって恐らく define.php (上記エラーの出たファイル)の先頭に以下を記述すれば済む問題だろうと想像できます。
if (php_sapi_name() == 'cli') {
$_SERVER = ['自分でブラウザアクセスと同様の値をセットしなおす'];
}
ですけれど、 $_SERVER 変数を上書きすることに抵抗があります。もっとスマートな、本来の方法はないものかと思い、こちらで質問させていただく運びとなりました。
例えば、コマンドラインに「次のコマンドは、Chrome からのアクセスということにした上で、実行せよ」などを書けば良さそうに思いますが、そんな呪文あるのでしょうか…
初心者につき情報の不足などあるかもしれませんので、その折はどうぞ遠慮なく仰ってください。
よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー