Estoy ejecutando pruebas de Debian y no puedo obtener un cron simple para ejecutar un script PHP con enlace simbólico.
Tengo un script php en un subdirectorio de mi carpeta de inicio /home/foobar/dir/script.php
(que comienza con el siguiente shebang #!/usr/bin/env php
).
He creado un enlace simbólico que apunta a él:
sudo ln -s ~/dir/script.php /usr/local/bin/whatever
ls -la /usr/local/bin
lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php*
Y agregué la siguiente regla a mi crontab (ejecutar whatever
cada minuto):
crontab -e
* * * * * whatever
Perono funciona, Obtuve el siguiente error:
cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found
Mientrasapuntar al script sin usar el enlace simbólico funciona:
crontab -e
* * * * * /home/foobar/dir/script.php
¿Alguna idea?
Respuesta1
Los directorios como /usr/local/bin
y /usr/local/sbin
no están por defecto en los cronjobs $PATH
. Pero puedes redefinir $PATH
en crontab, simplemente coloca algo como esto antes de cualquier cronjob definido.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Respuesta2
La variable de entorno $PATH en cron es limitada y no incluirá ni /usr/local/bin ni /home/foobar/dir. La respuesta correcta es, como descubrió, calificar completamente la ruta al script en su crontab; conduce a menos sorpresas.