2011-06-12 62 views
0

我有一个cron作业设置像的Cron不及格PARAMS到PHP脚本

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

但“URI” PARAM没有得到PHP脚本的。我也试过没有 - 在uri前面,但仍然没有。有任何想法吗?

+0

当你说它根本没有得到PHP脚本时,你的意思是'var_dump($ argv);'在PHP脚本中是空的? – Femi 2011-06-12 15:20:02

+0

@Femi肯定 – Kemo 2011-06-12 21:05:52

+0

在你的php.ini中'register_argc_argv'设为** On **? – Femi 2011-06-12 21:38:20

回答

1

一个更健壮的方法是接受您的PHP脚本中的命令行参数getopt()$argv并使其可执行。与一个例子称为script.php

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

使其可执行:

chmod +x script.php 

,并执行:

./script.php "cron/24satahr" 

将输出:

cron/24satahr 
0

是PHP脚本的Runn在所有?

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

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 

和它的作品!