Cron没有将params传递给PHP脚本

时间:2011-06-12 15:15:58

标签: cron

我有一个类似

的cron作业
php /home/novinarb/public_html/index.php --uri="cron/24satahr"

但是'uri'param根本没有进入php脚本。我也试过没有 - 在uri面前但仍然没有。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

更健壮的方法是在PHP脚本中使用getopt()$argv接受命令行参数并使其可执行。名为$argv的{​​{1}}示例:

script.php

使其可执行:

#!/usr/bin/php
<?php
  if (isset($argv[1])):
    echo $argv[1];
  endif;
?>

执行:

chmod +x script.php

将输出:

./script.php "cron/24satahr"

答案 1 :(得分:1)

我遇到了同样的问题但是在阅读了php的手册条目之后能够修复它。

最初我的设置如下:

/usr/bin/php -f /path/to/php/script.php -c 1426 >> /tmp/script.php.log 2>&1

我可以通过将行更改为:

来修复它
/usr/bin/php -f /path/to/php/script.php -- -c 1426 >> /tmp/script.php.log 2>&1

根据手动输入,语法为:

php [options] [ -f ] file [[--] args...]

此外,

 args...        Arguments passed to script. Use '--' args when first argument starts with '-' or script is read from stdin

顺便说一句,我的cron命令变为:

/usr/bin/php -f /path/to/php/script.php -- -c 1426 >> /tmp/script.php.log 2>&1

它有效!

答案 2 :(得分:0)

php脚本是否正在运行?

我怀疑你需要在你的crontab行中提供php的完整路径。即使cron作业像你一样运行,它们也没有设置任何登录环境;这意味着他们没有你的$ PATH。