特に PHP についてはわかりませんが、init または cron が見つかるまでプロセス ツリーをたどることができます。
PHP が独自のプロセス ID を取得して外部コマンドを実行できると仮定すると、 pidps -ef | grep pid
が独自のプロセス IDである場所を実行し、そこから親プロセス ID (PPID) を抽出するだけで済みます。
次に、親として cron または親として init に到達するまで、その PPID に対して同じことを行います。
たとえば、これは私のプロセス ツリーで、1 -> 6386 -> 6390 -> 6408 という所有権チェーンを確認できます。
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:21 ? 00:00:00 /sbin/init
allan 6386 1 0 19:04 ? 00:00:00 gnome-terminal --geom...
allan 6390 6386 0 19:04 pts/0 00:00:00 bash
allan 6408 6390 0 19:04 pts/0 00:00:00 ps -ef
cron の下で実行される同じプロセスは次のようになります。
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:21 ? 00:00:00 /sbin/init
root 5704 1 0 16:22 ? 00:00:00 /usr/sbin/cron
allan 6390 5704 0 19:04 pts/0 00:00:00 bash
allan 6408 6390 0 19:04 pts/0 00:00:00 ps -ef
この「プロセス ツリーをたどる」ソリューションは、cron で実行しているかどうかを示す人工的なパラメーターを導入することを心配する必要がないことを意味します。