最近新写的一个laravel项目需要用到laravel框架自带的定时任务模块,但是在部署的过程中发现对应的定时任务无法读取到系统的环境变量,具体crontab如下:
* * * * * /apps/php/php /home/apps/nova/artisan schedule:run -q >>/apps/logs/sche.log 2>&1
但是直接执行命令的话是可以正常读取的/apps/php/php /home/apps/nova/artisan schedule:run;
一直在怀疑是laravel框架的问题,查到最后发现是linux系统crontab的问题。在crontab中是不会去加载/etc/profile文件中环境变量的。于是只能写一个脚本进行执行具体脚本和crontab命令如下:
* * * * * /apps/sh/phprun.sh /home/apps/nova/artisan schedule:run -q >>/apps/logs/sche.log 2>&1
/apps/sh/phprun.sh 文件内容:
#!/bin/sh
. /etc/profile
. ~/.bash_profile
prefix=/usr/local/php/bin/php
$prefix $*