Nach dem Mann:
Der Cron-Daemon startet eine Subshell aus Ihrem HOME-Verzeichnis. Wenn Sie die Ausführung eines Befehls planen, wenn Sie nicht angemeldet sind und Befehle in Ihrer .profile-Datei ausführen möchten, muss der Befehl Ihre .profile-Datei explizit lesen.
Der Cron-Dämon stellt für jede Shell eine Standardumgebung bereit, in der HOME, LOGNAME, SHELL (= / usr / bin / sh)
und PATH (= / usr / bin) definiert sind.
Daher weiß cron daemon nicht, wo sich PHP befindet, und Sie sollten den vollständigen PHP-Pfad zum Beispiel von Hand angeben (ich kenne Ihren tatsächlichen PHP-Pfad nicht):
#!/bin/sh
/usr/local/bin/php /home/v/file.php
sh /root/x/some.sh
Eine andere Möglichkeit besteht darin, zum Beispiel die Datei / etc / profile (oder Ihr .profile / .bashrc) zu verwenden
* * * * * . /home/v/.bashrc ; sh /home/v/test.sh
Dies ist nützlich, wenn Ihre .bashrc-Datei die Umgebungsvariablen festlegt, die Sie benötigen (z. B. PATH).
BEARBEITEN
Eine interessante Lektüre ist " Newbie: Intro to cron ", unterschätzen Sie nicht den Artikel aus dem Titel (Es ist eine Lektüre für alle), in der Tat ist es gut vollständig geschrieben und beantwortet Ihre Frage perfekt:
...
PATH enthält die Verzeichnisse, die sich im Suchpfad für cron befinden. Wenn Sie z. B. ein Programm 'foo' im Verzeichnis / usr / cog / bin haben, ist es möglicherweise sinnvoll, / usr / cog / bin zum Verzeichnis hinzuzufügen Pfad, da Sie nicht jedes Mal den vollständigen Pfad zum 'Foo' verwenden müssen, wenn Sie ihn aufrufen möchten.
...