Según el hombre:
El demonio cron inicia una subshell desde su directorio HOME. Si programa que se ejecute un comando cuando no está conectado y desea que se ejecuten comandos en su archivo .profile, el comando debe leer explícitamente su archivo .profile.
El demonio cron proporciona un entorno predeterminado para cada shell, definiendo HOME, LOGNAME, SHELL (= / usr / bin / sh)
y PATH (= / usr / bin).
Entonces, cron daemon no sabe dónde está php y debe especificar la ruta de php completa a mano, por ejemplo (no sé su ruta de PHP real):
#!/bin/sh
/usr/local/bin/php /home/v/file.php
sh /root/x/some.sh
Otra forma es obtener el / etc / profile (o su .profile / .bashrc), por ejemplo
* * * * * . /home/v/.bashrc ; sh /home/v/test.sh
Esto es útil si su .bashrc establece las variables de entorno que necesita (es decir, RUTA)
EDITAR
Una lectura interesante es " Newbie: Intro to cron ", no subestimes el artículo del título (es una lectura para todos), de hecho está bien escrito y responde perfectamente a tu pregunta:
...
PATH contiene los directorios que estarán en la ruta de búsqueda de cron, por ejemplo, si tiene un programa 'foo' en el directorio / usr / cog / bin, podría valer la pena agregar / usr / cog / bin al ruta, ya que evitará que tengas que usar la ruta completa para 'engañar' cada vez que quieras llamarlo.
...