PHP文件手动运行但在Cron Job上表现出意外

我有一个dreamhost网络面板,我正在设置一个cronjob来运行我的php脚本,但它显示了奇怪的错误, 看起来它没有执行文件,但它正在读取文件。 错误如下所示,它来自我的电子邮件</ p>


?php:没有这样的文件或目录[somesessionvariable] = 1573:命令
未找到第3行: 意外令牌附近的语法错误
“include / mydb.php”'第3行:</ code> require_once(“include / mydb.php”); </ p>
</ blockquote>

这是邮件的主题:</ p>


Cron / usr / local / bin / setlock -n
/tmp/cronlock.3782446772.128284 sh -c $ '/ path /to/file/cases_cron.php'



nn

该文件的权限是755,我已经复制了其他完美运行的cronjobs的路径,所以没有 在获取文件内容时向文件路径发出问题。 我没有得到问题所在</ p>
</ div>

展开原文

原文

I have a dreamhost web panel and I am setting a cronjob to run my php script, but it shows weird errors, it looks like that it's not executing the file , but it's reading the file. The error is shown below, it comes as email to me

?php: No such file or directory [somesessionvariable]=1573: command not found line 3: syntax error near unexpected token "include/mydb.php"' line 3:require_once("include/mydb.php");

This is the subject of the mail:

Cron /usr/local/bin/setlock -n /tmp/cronlock.3782446772.128284 sh -c $'/path /to/file/cases_cron.php'

the permission of the file is 755 and i have copied the path from other perfectly running cronjobs, so no issue to the file path as it's getting the file contents. I am not getting where the problem is

dousui3124
dousui3124 <?phprequire_oncedirname(FILE)。“/include/mydb.php”;require_oncedirname(FILE)。“/include/all_common.php”;//include('../preloadsClients.php');if(!$db)$db=newDB();$qry=“SELECT*FROMCasesWHERECase_CaseId为NULL”;//echo$qry;$DB->查询($QRY);if($db->rows()>0){和其余代码,但是关于目录结构没有问题,因为我刚从工作脚本中复制了这些行,这在cron上工作正常。但这不起作用
8 年多之前 回复
duandun3178
duandun3178 我喜欢问题,从我有一个梦想开始;)。关于这个问题:我们可能需要更多细节。代码,文件夹结构例如。
8 年多之前 回复
duanji9264
duanji9264 看起来你在require_once()的末尾有一个引号;'。显示代码。
8 年多之前 回复

4个回答



好的,伙计们,感谢您的支持,我终于能够解决这个问题。 </ p>

我错过了文件顶部的以下行</ p>

#!/ usr / local / bin / php </ code > </ p>

在php文件的顶部添加此行,对我的问题进行了排序。 但我不知道这条线对脚本意味着什么。 但我从其他工作的crons复制了它。 </ p>
</ div>

展开原文

原文

Ok, Guys, Thanks for all of your support, I am finally able to sort out the matter.

I was missing the following line on the top of the file

#!/usr/local/bin/php

Adding this line at the top of the php file, sorted my problem. But i don't know that what this line means to the script. But i copied it from other working crons.

doumor942473
doumor942473 它告诉操作系统使用什么解释器。 请在您的cron作业中使用php -f <filename of script>。 然后,如果由cron或命令行(或由Web服务器)运行,将获得相同的输出
8 年多之前 回复
doris20141022
doris20141022 这行是#!/ usr / local / bin / php
8 年多之前 回复



我应该尝试使用包含文件的绝对路径。</ p>

我确定 问题是文件调用和cron调用中的包含路径没有设置相同。</ p>

你可以这样做:</ p>

  require_once dirname(__ FILE __)。“/ include / mydb.php”; 
</ code> </ pre>

__ FILE __ </ code>是此行所在文件的路径 执行, dirname()</ code>返回文件所在的绝对路径。</ p>

当然,您可以根据需要使用 require </ 代码>, require_once </ code>, include </ code>, include_one </ code> </ p>
</ div>

展开原文

原文

I should try to use an absolute path to your include file.

I'm sure the problem is about the include path not being set the same in file call and cron call.

You can do something like this :

require_once dirname(__FILE__)."/include/mydb.php";

__FILE__ is the path of the file where this line is executed, dirname() return the absolute path where the file is located.

Of course, you can use, as you want require, require_once, include, include_one

dsfdsf21312
dsfdsf21312 不,没有'在文件中,它在回复邮件中,可能是cron已经提到了像'somethign'这样的错误。 但在文件中没有引号
8 年多之前 回复
download92000
download92000 Thans @DaveRandom,我不知道。 @King Khan,似乎问题是关于'包括在最后。 删除它,它会工作。
8 年多之前 回复
duanjianhe1388
duanjianhe1388 谢谢你的回复,但正如我之前提到的那样,包括在其他cron文件中工作
8 年多之前 回复
doukenqiong0588
doukenqiong0588 自从5.3 __DIR__包含dirname(__ FILE__)以来的FYI
8 年多之前 回复



您的路径可能已关闭。 尝试避免相对路径(include / file.php而不是/var/www/project/include/file.php)或使用 chdir()。</ p>
</ div>

展开原文

原文

Your paths are probably off. Try to either avoid relative paths (include/file.php instead of /var/www/project/include/file.php) or change your working directory with chdir().



你也可以在你的cronjob中输入'cd'命令,即:</ p>

   cd / path / to / phpfile&amp;&amp;  php -f file.php 
</ code> </ pre>
</ div>

展开原文

原文

You can also put an 'cd' command into your cronjob ie:

cd /path/to/phpfile && php -f file.php

duanke2012
duanke2012 谢谢,但正如我上面提到的那样,没有路径问题,因为cron正在访问文件并在文件内容中显示错误
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐