Cron作业 - 无法打开输入文件:

时间:2012-07-18 18:31:53

标签: ssh crontab cgi-bin

我已经设置了一个php文件来运行,只有echos你好。

<?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 

我不知道造成这种情况的原因。我正在使用godaddy的虚拟专用服务器并安装了cpanel x。我已经使用ssh在文件夹和文件上设置权限777,仍然无法让它运行。

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

1 个答案:

答案 0 :(得分:5)

由于某些原因,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

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

另一种可能性

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作业,并避免从外部访问它。