No sé mucho sobre el trabajo cron, pero tengo un archivo php que envía datos con un archivo adjunto cuando lo ejecuto usando el navegador, funciona bien y se envía el archivo adjunto, pero si uso el trabajo cron para ejecutarlo, nunca va con el archivo adjunto. aquí está la línea de comando del trabajo cron:
/opt/php54/bin/php /home/username/public_html/path/to/myscript.phpy aquí está el lugar del error en el archivo php, ya que el trabajo cron me envió un correo electrónico con "¡De alguna manera el archivo: hhshd.jpg no existe!" , sin embargo, los datos adjuntos se envían correctamente cuando uso el navegador.
if (!file_exists("uploads/" . $fileName)) { die("Some how file :$fileName is not exist!"); }Nota: estoy usando el cronjob de Hostgator.
Problema resuelto, he usado este comando de trabajo cron:
curl http://yoursite/path/to/publish.phpUna posible razón es que cuando ejecuta el script a través del navegador, el usuario de Apache puede crear el archivo adjunto y enviarlo.
Pero cuando cronjob no puede crear un archivo adjunto debido a un problema de permiso.
Puede intentar usar 'sudo' en su cronjob o intentar cambiar el permiso del directorio donde está creando el archivo adjunto.
Lo más probable es que sea un problema de propiedad y permisos. Lo que tiene que poner en su configuración cron depende de dónde lo haya puesto y de qué usuario se ejecuta su servidor web. Si desea que se ejecute a las 5 a. m. todos los días, está en /etc/crontab y www-data es el usuario de su servidor web, necesitaría una entrada como esta:
0 5 * * * www-data /opt/php54/bin/php /home/username/public_html/path/to/myscript.php Si está en el propio archivo crontab del usuario del servidor web, omitirá el campo de nombre de usuario. Lo editaría usando crontab -u www-data -e y agregaría una línea como esta:
0 5 * * * /opt/php54/bin/php /home/username/public_html/path/to/myscript.php Otro problema puede ser que el directorio de trabajo actual puede ser diferente, por lo que es posible que deba configurar el comando para incluir un cd en el directorio en el que se encuentra su script primero, así:
cd /home/username/public_html/path/to && /opt/php54/bin/php myscript.php Si desea recibir un resultado de error de un trabajo cron, configure una variable de entorno MAILTO agregando una línea como esta al archivo cron antes de ejecutar el comando:
MAILTO=user@example.com