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

use*_*853 4 ssh crontab cgi-bin

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

<?php
echo hello;
?>
Run Code Online (Sandbox Code Playgroud)

我的cron工作看起来像这样:

/usr/local/bin/php -f “/home/username/public_html/mls/test.php”
Run Code Online (Sandbox Code Playgroud)

当我的脚本运行时,我收到一封确认电子邮件说:

Could not open input file: /home/username/public_html/mls/test.php 
Run Code Online (Sandbox Code Playgroud)

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

任何意见将是有益的.谢谢.

LSe*_*rni 6

由于某种原因,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
Run Code Online (Sandbox Code Playgroud)

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

另一种可能性

crontab就是指/home/username/public_html/mls/test.php- 也就是说,一个公共HTML目录,位于主目录的用户名的commonest值中.

这是可能的cron作业或者未使用适当的用户和权限运行的,或者说,它"看到"用户实际上是一个虚拟的用户-也就是没有"/家庭/用户名"的说法-与"主目录"在其他地方,甚至可能存在只要cron工作运行.在这种情况下,解决方案可能是指

~/public_html/mls/test.php
Run Code Online (Sandbox Code Playgroud)

或者,如上所述,首先运行的命令,如pwdls -la准确地确定在计划作业的当前工作目录.

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

/usr/bin/curl http://www.thishostname.com/mls/test.php
Run Code Online (Sandbox Code Playgroud)

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