Cron作业错误“;无法打开输入文件";

Cron作业错误“;无法打开输入文件";,cron,Cron,我花了整整一天的时间来寻找解决这种特殊情况的方法(关于堆栈溢出和Googs),所以如果这已经是关于堆栈溢出的,我很抱歉 我试图通过命令行在AWS中设置一个相当简单的cron作业: * * * * * /usr/bin/php /opt/app/current/record_user_login.php cron作业已成功启动,并且能够接触到有问题的文件(它正在命中正确的环境)。但是,我不断收到错误消息: "Could not open input file" 我已经: 将文件复制到777

我花了整整一天的时间来寻找解决这种特殊情况的方法(关于堆栈溢出和Googs),所以如果这已经是关于堆栈溢出的,我很抱歉

我试图通过命令行在AWS中设置一个相当简单的cron作业:

* * * * * /usr/bin/php /opt/app/current/record_user_login.php
cron作业已成功启动,并且能够接触到有问题的文件(它正在命中正确的环境)。但是,我不断收到错误消息:

"Could not open input file"
我已经:

  • 将文件复制到777
  • 将脚本更改为只回显“Hello world”
  • 尝试以root用户身份启动cronjob
  • 将crontab文件本身修改为777
这些解决方案似乎都不起作用。由于一个未知的原因,我无法编辑rsyslog.conf来打开cronlog,因此我没有这方面的任何数据

记录用户登录的内容包括:

<?
    include("connect_to_mysql.php");

    //Logged in in 1 week
    $current_date = date('Y-m-j H:i:s', strtotime("-1 weeks"));

    $query = "SELECT DISTINCT user_id FROM users_login_history WHERE sign_in_time > '$current_date'";
    $result = mysql_query($query) or die(mysql_error());
    $i = 0;
    while($row = mysql_fetch_array($result)){
        $i++;
    }
    $query = "INSERT INTO sqm_data (feature, action) VALUES ('user login', $i)";
    if(!mysql_query($query)) {
        die('Error: ' . mysql_error());
    }
?>

尝试添加-q标志。此外,如果您还没有,记录您的输出可能是有益的

你确定你的PHP路径是正确的吗?我看到过这样的例子:

* * * * * php -q /opt/app/current/record_user_login.php

你可能想试试看。

游戏进行得太晚了,但我确实找到了解决办法。发生的情况是:

我最初是在Windows记事本中键入cron命令并上传的。显然发生的事情是回车(“/r”,IIRC)被插入,我不知道(还有vim,当我从putty查看文件时)。一位朋友用一种我不记得的方法删除了那些回车,不幸的是,我没有很好地遵循这种方法,但在删除回车后,一切都正常了。

尝试一下:

* * * * * cd /var/www/html/cron/; /usr/bin/php /var/www/html/cron/filename.php -q -f

在cpanel中,这一个解决了我的问题

 php -q -f /home/skat_2347/public_html/cron.php /home/skat_2347/public_html/

如果您将脚本更改为回显“Hello World”,它是否会打印出来?不幸的是,没有打印任何内容。我刚刚收到“无法打开输入文件”错误不管你的问题是什么,chmod 777是错误的,不安全的!请不要实施此反模式。哇。冷静下来。当时我不知道发生了什么,所以我正在尽我所能诊断问题。感谢您的跟进。不幸的是,当我添加-q标志时仍然会出现错误。至于记录输出,我似乎无法编辑.conf文件来打开cronlog(这是我遇到的另一个问题)。为了编辑conf文件,您是否拥有对服务器的完全访问权限?如果你在共享主机上,你很可能无法访问此文件。终于让它工作了。这是我在日志中看到的。没有看到任何特别的内容:“Jul 14 19:58:01 ip-10-212-147-129 CROND[14473]:(root)CMD(/usr/bin/php/opt/app/current/Scripts/record_user_logins.php^M)Jul 14 19:58:01 ip-10-212-147-129 CROND[14473]:(root)CMD(/usr/bin/php/opt/app/current/Scripts/record_user_logins.php^M)”感谢您一直关注这一点,我意识到我还没有找到解决办法,这一定有点令人沮丧。我为php文件提供的路径是正确的;我尝试了两个其他路径,在whereis结果上监听whereis结果(例如/usr/lib/php,这是一个目录),但它们都不起作用。您是否能够发布record_user_login.php的内容?当答案左侧有绿色复选框时,此答案被接受为解决方案。不需要回答,除非你能添加一个新的解决问题的方法。这件事今天发生在我身上。这个模糊的答案对我帮助很大,一个快速的“dos2unix”就开始运行了。谢谢。看在上帝的份上——同样简单的事情。我以前在cron-edit中也遇到过这个问题,但忽略了它。供参考;您可以使用某些文本编辑器在windows上转换/编辑“linux格式”文件,我使用EditPad来实现这一点。不用马车返回就能省下来我也有同样的经历。。由于某种原因,文件每次都以DOS格式保存。遇到了完全相同的问题。要测试DOS CRLF行结束符,请运行文件yourscript,如果它返回“ASCII文本,带有CRLF行终止符”,则您的行结束符错误。感谢您的回答,我还在Windows上使用Netbeans编辑了cron文件,然后想知道大约2个小时我的cron为什么没有运行,最后在Ubuntu上用升华文本编辑了cron,事情开始起作用了
 php -q -f /home/skat_2347/public_html/cron.php /home/skat_2347/public_html/