当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');