4

我已经设置了一个 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,但仍然无法运行。

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

4

1 回答 1

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

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

另一种可能

crontab 指的是/home/username/public_html/mls/test.php- 即用户名的主目录最常见值内的公共 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 作业进行身份验证,并避免从外部访问它。

于 2012-07-18T18:38:12.327 回答