最近の、別の記事を探す
【タイトル】
CLIで実行しないとargvはundefinedになる
【キーワード】
CLI,argv,undefined,CGI,サイト改ざん,ファイル日付
【内容】
cronジョブで実行すると、自動的にCLIになるとの誤解を持っていたのでしょうか?
CLIで実行したいスクリプトをSSHでテストすると、「PHP Notice:
Undefined ・・・ argv・・・」と表示される。このメッセージでそのまま検索すると、「register_argc_argv」が有効になってなかったという記事が数件。phpinfo()で調べて問題なし。散々検索して、何がヒントで気付いたか覚えていませんが、
CLIにたどり着いた。なんと
「そこ」で間違えていました。CLIでなくCGIで動かしていたので、argvは取れません。
CLIがキーワードになってからは、一気に解決しました。
見た記事の1件目、CLI版が多いのは
/usr/bin/php
で、
これに変更してから一気に解決しました。私が以前実行し、
実績ありと誤解していたcronジョブは
/usr/local/bin/php
でした。これはCGI版のPHPの呼び出しです。実行するスクリプトは外部からの入力なしでメールを打つだけなのでCGI/CLIに関係なく実行出来た訳です。
私はXREAを使っています。XREAではコマンド名phpはCGI版、phpvvcli(vvはバージョン)はCLI版で使い分けが出来るようです。今現在は必要性がないので試していません。
サイト改ざんの検出をするために、自分のサイト中の
ファイル日付をチェックして、所定の日付(パラメタ指定)より後に更新された、
ファイル名/ファイル日付をメールで届けると言うスクリプトを毎夜cronジョブで実行したかったのです。上手く動作しています。
2023/3/30 加筆修正
時期は不明ですが、XREAで
/usr/bin/phpは
No such file or directoryになります。なので
usr/local/bin/php80cli (php8.0用)を使っています。
更新日 2023-03-30