当php文件从另一个php调用函数时,Cron作业失败。文件
我设置了一个当php文件从另一个php调用函数时,Cron作业失败。文件,php,cron,Php,Cron,我设置了一个cron作业来运行testemail.php。每分钟都很好用。(Ubuntu本地主机,php5) 我还有第二个文件findandemail.php,它运行一些数据库任务并发送电子邮件。电子邮件功能是在中定义的(我确实包括它如下)“./scripts/functions.php”。它不工作,而testemail.php仍然工作 Cron在本例中 * * * * * /usr/bin/php5 -q /var/www/cocoraco/portfolio/html/testemail.p
cron
作业来运行testemail.php。每分钟都很好用。(Ubuntu本地主机,php5)
我还有第二个文件findandemail.php
,它运行一些数据库任务并发送电子邮件。电子邮件功能是在中定义的(我确实包括它如下)“./scripts/functions.php”
。它不工作,而testemail.php仍然工作
Cron
在本例中
* * * * * /usr/bin/php5 -q /var/www/cocoraco/portfolio/html/testemail.php > /dev/null 2>&1
* * * * * /usr/bin/php5 -q /var/www/cocoraco/portfolio/find/findandemail.php > /dev/null 2>&1
作为测试,如果我将代码从testemail.php复制到findandemail.php,发送一封虚拟电子邮件,该部分运行良好。我是新来的cron
有人能解释一下吗?提前感谢。我从未使用php作为cron任务的可执行文件 我建议使用wget并将输出记录到文件中(取决于脚本) 比如:
# m h dom mon dow command
* * * * * wget -bqc http://domain/testemail.php
希望这有助于…当执行这样的代码时,您的代码在
/usr/bin
运行,因此如果包含../scripts/functions.php
您的代码将在/usr/scripts/functions.php
我喜欢使用\uuuu FILE\uuuu
魔法常量来包含非常防弹的文件:
include(dirname(__FILE__).'/../scripts/functions.php');
这应该能帮到你。所以文件
/var/www/cocoraco/portfolio/scripts/functions.php
确实存在,对吧?嗯,看起来很像。我会查出来然后寄回来。但还有一个问题。Cron查找findandemail.php
,并从那里调用“../scripts/functions.php”。那么目录是否应该自动更改呢?不,脚本是从cron用户的主目录执行的,如果没有主目录,则从二进制目录执行。但是,您可以在cronjob中指定目录:***cd/var/www/cocoraco/portfolio/find//usr/bin/php5-q/var/www/cocoraco/portfolio/find/findandemail.php>/dev/null 2>&1
,这很有效。非常感谢。最后一点澄清。如果我回显dirname(_文件)'/../scripts/functions.php'
,它将给出/var/www/cocoraco/portfolio/html/。/scripts/checkuserlog.php
。它可以工作,但我不应该使用脚本/filename.php
前面的。/
,对吗?不,这样做完全正确。顺便说一句,您可以使用在路径中包含../scripts目录,然后只执行include filename.php
。如果您需要包含来自该目录的许多不同文件,这一点尤其有用。谢谢,您能告诉我为什么从不使用php作为可执行文件吗?我将查看响应中的建议并发回。使用php直接执行文件似乎与使用apache提供文件的方式不同,配置经常不同,为了防止配置问题,我只使用wget.Ok。我想我最终会遇到这些问题谢谢
include(dirname(__FILE__).'/../scripts/functions.php');