2011-06-12 64 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 

和它的作品!