2014-08-31 144 views
0

我一直在努力shell_exec PHP函數和在Linux命令2天。 要長話短說,這個工程:在shell_exec和at命令中使用wget?

shell_exec('/usr/bin/at 09:32 <<EOF 
     touch /var/www/website/hello.txt 
EOF' 
); 

這並不:

shell_exec('/usr/bin/at 09:32 <<EOF 
     wget -O - -q -t 1 "http://192.168.56.101/website/test.php?param=hello" >/dev/null 2>&1 
EOF' 

); 

爲什麼?

(注:上面的代碼不工作在控制檯)提前

感謝。

+1

使用['file_get_contents'(http://php.net/manual/en/function.file-get-contents.php)代替wget的。而cron而不是'at'。 'shell_exec'應該被認爲是有害的,並且在一般情況下是最後的手段。 – OmnipotentEntity 2014-08-31 08:27:05

+0

工作是否在'at'結束? (http://serverfault.com/questions/174678/how-do-i-print-contents-of-at-jobs) – GhostGambler 2014-08-31 08:30:55

+0

'system_exec'調用的返回值是什麼? – GhostGambler 2014-08-31 08:31:12

回答

0

好吧,我終於明白了!

對於那些對pb感興趣的人來說,wget命令也需要使用完整路徑(即:/ usr/bin/wget)來調用。 誤導我的是touch命令不需要它。這很奇怪,但無論如何,這裏的工作代碼:

shell_exec('/usr/bin/at 09:32 <<EOF 
     /usr/bin/wget -O - -q -t 1 "http://192.168.56.101/website/test.php?param=hello" >/dev/null 2>&1 
EOF' 
); 
+0

這是因爲觸摸是一個shel l內建。 – OmnipotentEntity 2014-08-31 16:52:07

+0

@OmnipotentEntity不,它不是。 – Rapptz 2014-08-31 19:38:13

+0

你是對的!抱歉 – OmnipotentEntity 2014-08-31 20:06:23