【问题标题】:Cron Job - Could not open input file:Cron 作业 - 无法打开输入文件:
【发布时间】:2012-07-17 21:09:41
【问题描述】:

我已经设置了一个 php 文件来运行,它只是回显你好。

<?php
echo hello;
?>

我的 cron 任务如下所示:

/usr/local/bin/php -f “/home/username/public_html/mls/test.php”

当我的脚本运行时,我会收到一封确认电子邮件,上面写着:

Could not open input file: /home/username/public_html/mls/test.php 

我不知道是什么原因造成的。我正在使用安装了 cpanel x 的 godaddy 的虚拟专用服务器。我已经使用 ssh 对文件夹和文件设置了权限 777,但仍然无法运行。

任何建议都会有所帮助。谢谢。

【问题讨论】:

  • echo hello; 应该是 echo "hello"。你的输出中有印刷商的报价是否重要?我希望您没有在实际命令中使用它们。
  • 我的意思是“你好”。这不是我的 php 的问题......我的 cron 甚至没有找到文件。
  • 试试在 /home/username/ 之后开始的路径?

标签: ssh crontab cgi-bin


【解决方案1】:

由于某种原因 PHP 无法打开文件。尝试用“ls -la”替换 /usr/local/bin/php -f 以尝试获取更多信息。记住不要在 crontab 中引用文件名:php -f filename.php,而不是 php -f "filename.php",除非它包含空格——然后最好使用单引号。

可能的话,试试“ls -la /home”、“ls -la /home/username”、“ls -la ~/public_html”等等。

也可以尝试追加

2>&1

到命令行,以防只有标准输出被邮寄给你(我真的不这么认为,但确保成本很低)。

另一种可能性

crontab 引用 /home/username/public_html/mls/test.php - 即 username 主目录最常用值中的公共 HTML 目录。

cron 作业可能没有以适当的用户和权限运行,或者它“看到”的用户实际上是 虚拟 用户 - 根本没有“/home/username”——而且“主目录”在别处,甚至可能只要 cron 作业运行就存在。在这种情况下,解决方案可能参考

~/public_html/mls/test.php

或者,如上所述,首先运行诸如pwdls -la 之类的命令来确定cron 作业的当前工作目录的确切位置

如果这也失败了,那么另一种解决方法可能是通过 curl 或 lynx 调用 PHP HTTP 处理程序:

/usr/bin/curl http://www.thishostname.com/mls/test.php

可能使用某些环境变量或 curl 标头或 _GET 选项将脚本作为 cron 作业进行身份验证,并避免从外部访问它。

【讨论】:

  • 谢谢,我只需要删除 url 路径周围的“”。现在它工作正常。谢谢。
  • 第一次使用 GoDaddy Cpanel 设置我的 cron 作业,/usr/bin/curl 成功了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 2014-02-22
  • 1970-01-01
  • 2018-11-23
  • 2015-06-19
  • 1970-01-01
  • 2021-07-16
相关资源
最近更新 更多