使用cron运行php脚本不起作用
我有一个php电子邮件(phpmailer 5.2.14)脚本,在bash中运行时,该脚本运行良好:使用cron运行php脚本不起作用,php,cron,crontab,phpmailer,Php,Cron,Crontab,Phpmailer,我有一个php电子邮件(phpmailer 5.2.14)脚本,在bash中运行时,该脚本运行良好: pi@schnickschnack: php /var/www/html/email.php 当我使用cron(sudo crontab-e)运行此脚本时: syslog说 Jan 22 08:53:01 Schnickschnack CRON[4482]: (root) CMD (root php /var/www/html/email.php) …但我没有收到邮件。 我有另一个php脚本
pi@schnickschnack: php /var/www/html/email.php
当我使用cron(sudo crontab-e)运行此脚本时:
syslog说
Jan 22 08:53:01 Schnickschnack CRON[4482]: (root) CMD (root php /var/www/html/email.php)
…但我没有收到邮件。
我有另一个php脚本,它可以很好地与crontab配合使用。此脚本将phpmodbus中的值插入mysql数据库。。。
有人知道为什么邮件脚本不能与cron一起使用吗?试试看
* * * * * php /var/www/html/email.php
否则,cron将尝试执行“root”命令,该命令不是命令。try
* * * * * php /var/www/html/email.php
否则,cron将尝试执行命令“root”,这不是一个命令。当您使用cron运行时,所有常用的$PATH和ENV都不可用。 所以CRON不知道在哪里可以找到“php” 根据您的安装,确定PHP容器的位置:
which php
在cronjob中使用生成的路径。例如:
*/1 * * * * /bin/php /var/www/html/email.php
**除非有意,否则不要将email.php脚本留在任何简单点击Web服务器的人都可能“无意”运行的地方。当然,email.php也在ScriptKiddies的热门列表中。由于您是通过cron运行的,所以所有常用的$PATH和ENV都不可用。 所以CRON不知道在哪里可以找到“php” 根据您的安装,确定PHP容器的位置:
which php
在cronjob中使用生成的路径。例如:
*/1 * * * * /bin/php /var/www/html/email.php
**除非有意,否则不要将email.php脚本留在任何简单点击Web服务器的人都可能“无意”运行的地方。email.php当然在脚本kiddies的热门列表中。我根据您的建议更改了这一点,但邮件脚本不起作用尝试使用php文件的完整路径(在大多数系统上,您可以通过在shell中执行“which php”找到它)按Franz说的做(通常是
/usr/bin/php
),或者在你的/etc/crontab
中设置一个路径
env var。我根据你的建议更改了它,但是邮件脚本不起作用。尝试使用php文件的完整路径(在大多数系统上,你可以通过在shell中执行“which php”来找到它)按照Franz说的做(通常是/usr/bin/php
),或者在/etc/crontab
中设置路径
环境变量。