趣味のPHP |→お問い合わせ趣味のPHP
  1. ホーム
  2. 失敗から学ぶPHP
《記事番号:53》 2023-03-30 15:53:52
最近の、別の記事を探す

【タイトル】
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/phpNo such file or directoryになります。なのでusr/local/bin/php80cli (php8.0用)を使っています。
更新日 2023-03-30
検索


OR検索AND検索
検索方法の違い


更新履歴
追加・更新されたブロックの内容を自動的に表示しています。
メニュー
このサイトは
XOOPSのブロック管理の考え方を参考にして作った自作ツールで作成しています。

このサイトは、全ページどのページからでもリンクフリーです。
このサイトは
 2023/1/6から、このサイトを「パソコンよろず攻防」から「趣味のPHP」に変更しました。過去の記事に現れる、パソコンよろず攻防の文言はそのままにしてあります。
PHPのバージョンアップ