【问题标题】:Error while executing command with Cron使用 Cron 执行命令时出错
【发布时间】:2011-05-20 14:43:03
【问题描述】:

我正在尝试使用带有 Cpanel 的 Cron 在我的网站中执行一个 php 脚本。

但我总是收到通过电子邮件发送的错误:

使用时:php @987654321@

我收到此错误:

404 Not Found
X-Powered-By: PHP/5.2.14
Content-type: text/html
No input file specified

使用:/usr/local/bin/php -f @987654322@

我明白了:

Could not open input file: http://mysubdomaine.mysite.com/job/job.php

但是我的网站中存在php文件http://mysubdomaine.mysite.com/job/job.php,当我在浏览器中输入路径时,脚本就会执行。

我也尝试过使用 wget,但总是出错。

这里有什么问题?

谢谢。

【问题讨论】:

  • 你在 wget 的正确轨道上,与 php 命令不同,它需要一个 URL。 wget 给你带来了什么错误?
  • 使用wget http://mysubdomaine.mysite.ch/job/job.php;我明白了/bin/sh: /usr/bin/wget: Permission denied
  • 您在哪个用户的 cron 下运行它? wget 默认尝试将请求的 url 保存到文件中,所以这可能是权限错误的原因,尝试使用 -O /dev/null 开关运行它以将输出发送到垃圾箱。
  • 有人告诉我这是 htaccess 的问题;你觉得呢?
  • 不...问题是我在下面的回答中所说的,而另一个问题(wget)就是我上面所说的。当您使用 -O /dev/null 运行 wget 命令时会发生什么?或者当您以运行此程序的 cron 用户身份登录并执行 wget 命令时会发生什么情况,您是否获得权限被拒绝?

标签: php cron cpanel


【解决方案1】:

您不能从命令行将 URL 传递给 PHP,它需要一个文件路径。类似于/var/www/yoursite.com/html/index.php

您可以通过查看 $_SERVER 变量找出真正的路径。在脚本的顶部放置

echo $_SERVER['SCRIPT_FILENAME'];

从浏览器中点击它,该行打印的是您需要在命令行中传递的信息。这将显示脚本的完整路径和文件名。

【讨论】:

  • 你怎么知道它没有运行?它可能正在运行,只是没有成功完成所需的操作。检查您的 http 服务器的错误日志。
  • 因为脚本打开一个文件并添加一行“Hello world”并关闭文件。但执行后看不到 Hello World 行。
  • 当我添加这一行时:echo $_SERVER['SCRIPT_FILENAME']; Cron 已经发送了一封电子邮件,其中包含我服务器中的脚本文件名!奇怪吗?
  • 这表明脚本实际上正在运行,它只是没有做你想做的事。可能是因为它试图打开和写入的文件使用的是相对路径,并且您没有像从浏览器调用它时那样从该路径运行它。硬编码完整路径,或在执行 php 命令之前更改路径。
  • 我更改了文件的路径,但仍然得到:/bin/sh: /usr/bin/wget: Permission denied
【解决方案2】:

使用本地文件路径执行 PHP 脚本

/usr/local/bin/php -f /path/to/your/script

【讨论】:

    【解决方案3】:

    你确定要php -f myscriptbehindapache 吗?

    也许你真的想做wget myscriptbehindapache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2018-05-12
      • 2011-06-08
      • 1970-01-01
      相关资源
      最近更新 更多