Php 在Crontab中使用相对路径
我试图在CentOS 6.4上的crontab文件中使用相对路径,这样我就不必反复重复相同的绝对路径。在我的crontab文件的顶部,位于这里:Php 在Crontab中使用相对路径,php,cron,centos,crontab,Php,Cron,Centos,Crontab,我试图在CentOS 6.4上的crontab文件中使用相对路径,这样我就不必反复重复相同的绝对路径。在我的crontab文件的顶部,位于这里:/etc/crontab,我有: SHELL=/bin/bash PATH=/var/www/html/crons MAILTO="" HOME=/ 我的每个命令如下所示: */2 * * * * root /usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".l
/etc/crontab
,我有:
SHELL=/bin/bash
PATH=/var/www/html/crons
MAILTO=""
HOME=/
我的每个命令如下所示:
*/2 * * * * root /usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log"
我希望它将运行/var/www/html/crons
目录中的cronfile.php
php文件,并将输出保存到/var/www/html/crons/logs/cronfile.log
。但是,没有运行该文件,也没有创建日志文件
如果仅运行以下命令,则该命令工作正常:
/usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log"
从cd
ing之后的命令行进入/var/www/html/crons
目录
请告知,谢谢。
/usr/bin
默认情况下已在大多数系统的路径中,因此您应该能够从crontab顶部删除路径声明
您的作业正在bash shell中运行,因此您可以执行以下操作:
*/2 * * * * root cd /var/www/html/crons && php cronfile.php >> cronfile_`date +\%Y\%m\%d`.log
经过多次试验和研究,我发现解决方案是使用HOME=
变量,而不是PATH=
变量,如下所示:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/var/www/html/crons
然后每一行看起来就像:
*/2 * * * * root /usr/bin/php cronfile.php >> logs/cronfile_`date +\%Y\%m\%d`.log
希望这能帮助其他人解决我以后遇到的问题。将目录放在环境路径中(如果必须的话)-这里没有什么问题,使用绝对路径很有意义,如果你不能复制和粘贴几次-没有希望。你能解释一下如何使用环境路径吗?另外,并不是我不能复制和粘贴,而是我想避免冗余,因为我知道有很多行,它们会根据我的需要频繁更改。谢谢你的回答。实际上,我只想在文件中包含一次绝对路径(而不是每行),我刚刚找到了解决方案,所以我发布了解决问题的方法。