De acordo com o homem:
The cron daemon starts a subshell from your HOME directory. If you schedule a command to run when you are not logged in and you want commands in your .profile file to run, the command must explicitly read your .profile file.
The cron daemon supplies a default environment for every shell, defining HOME, LOGNAME, SHELL (=/usr/bin/sh),
and PATH (=/usr/bin).
Portanto, o daemon do cron não sabe onde o php está e você deve especificar manualmente o caminho completo do php, por exemplo (não sei qual é o caminho real do PHP):
#!/bin/sh
/usr/local/bin/php /home/v/file.php
sh /root/x/some.sh
Outra forma é utilizar o / etc / profile (ou seu .profile / .bashrc), por exemplo
* * * * * . /home/v/.bashrc ; sh /home/v/test.sh
Isto é útil se o seu .bashrc definir as variáveis de ambiente que você precisa (ou seja, PATH)
EDITAR
Uma leitura interessante é " Novato: Introdução ao cron ", não desvalorize o artigo do título (é uma leitura para todos), na verdade é bem escrito completo e responde perfeitamente à sua pergunta:
...
PATH contains the directories which will be in the search path for cron e.g if you've got a program 'foo' in the directory /usr/cog/bin, it might be worth adding /usr/cog/bin to the path, as it will stop you having to use the full path to 'foo' every time you want to call it.
...