我有几个我试图设置的php脚本(最近移动到新服务器)它们将从命令行和浏览器运行,但只有一个将通过cron运行,另一个似乎有权限问题,如果该文件设置为644我从cron收到此消息: / bin / sh:/home/xyz/public_html/scripts/update-script.php:权限被拒绝
如果我将权限设置为777,我收到此消息:
/home/xyz/public_html/scripts/update-script.php:第1行:?php:没有这样的文件或目录
/home/xyz/public_html/scripts/update-script.php:第2行:意外令牌附近的语法错误`“includes / clsDatabase-list.php”'
/home/xyz/public_html/scripts/update-script.php:第2行:`require_once(“includes / clsDatabase-list.php”);'
然而脚本从命令行和浏览器运行并且我有另一个脚本几乎与这个脚本相同(调用相同的包含在第1行,位于完全相同的文件夹中)将通过cron运行!所以我知道我在Cpanel设置的路径和cron工作是正确的。如果我在命令行中复制工作版,则复制的版本也无法通过cron运行。谢谢!
答案 0 :(得分:1)
您需要在文件中添加一个shebang才能直接执行它:
#!/usr/bin/env php
<?php
//...
另一个选择就是在你的cronjob中调用它:
* * * * * php /home/xyz/public_html/scripts/update-script.php
当然,您将* * * * *
替换为实际的crontab数据,除非您希望它每分钟运行一次。