【问题标题】:shell_exec wont work from crontabshell_exec 不能从 crontab 工作
【发布时间】:2015-01-06 20:15:16
【问题描述】:

我查看了其他不适合这种情况的答案。 我正在使用文件的完整路径。我复制的代码被简化了。

run.php 包含:

shell_exec("php /var/www/html/sync/chourly.php $position $quotientx > /dev/null 2>/dev/null &");

如果我手动使用php run.php - 效果很好。 这是 crontab -e 上的行:

05 * * * *  /usr/bin/wget -O /dev/null http://sync.eeeww.com/run.php

run.php 文件再次启动,但 chourly.php 没有启动。我正在使用centOS 6 请问有什么建议吗? 另外:我检查了我使用 ec2-user 运行 php run.php 的权限,而 crontab 使用的是相同的权限。它能够运行该文件,但 shell_exec 是问题发生的地方

【问题讨论】:

  • 那么为什么在cron中调用http//?
  • @cpburnz 不正确
  • 它确实运行了。我还有 10 个其他 crons 设置,它们的工作方式都一样。
  • 如果 sync.bitpine.com 是您的站点,您可以使用 php run.php 作为 cron 作业
  • 这不是问题。问题是 shell_exec 没有启动 chourly.php

标签: php cron crontab shell-exec


【解决方案1】:

/var/www/html/sync/chourly.php 是否使用 $SERVER['DOCUMENT_ROOT'] ?由于您显式调用 php 解释器(而不是 mod_php),因此 `$SERVER['DOCUMENT_ROOT'] 调用将无法按预期工作。

尝试从 shell 手动运行 cron 以查看失败的地方。

cd /
su - your_httpd_usersame -c "/usr/bin/wget -O /dev/null http://sync.bitpine.com/run.php"

【讨论】:

  • su -u httpd -c "/usr/bin/wget -O /dev/null sync.bitpine.com/run.php" 返回 su 命令的选项和文档。它不起作用
  • 那么我需要做什么才能使用 cron 工作?
  • 手动运行上述命令时是否报错?
  • 无法打开文件是错误抱歉耽搁了
  • 如果没有关于错误和脚本中代码的更多详细信息,恐怕我无法帮助您...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2013-05-27
  • 1970-01-01
相关资源
最近更新 更多