Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Crontab中使用相对路径_Php_Cron_Centos_Crontab - Fatal编程技术网

Php 在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

我试图在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`".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

希望这能帮助其他人解决我以后遇到的问题。

将目录放在环境路径中(如果必须的话)-这里没有什么问题,使用绝对路径很有意义,如果你不能复制和粘贴几次-没有希望。你能解释一下如何使用环境路径吗?另外,并不是我不能复制和粘贴,而是我想避免冗余,因为我知道有很多行,它们会根据我的需要频繁更改。谢谢你的回答。实际上,我只想在文件中包含一次绝对路径(而不是每行),我刚刚找到了解决方案,所以我发布了解决问题的方法。