2010-03-08 50 views
1

我有以下的PHP腳本:問題進行系統調用與PHP腳本

<?php 
    $fortune = `fortune`; 
    echo $fortune; 
?> 

但輸出僅僅是空白(拋出沒有明顯的錯誤)。

但是,如果我跑php -a,它的工作原理:

php > echo `fortune`; 
Be careful of reading health books, you might die of a misprint. 
     -- Mark Twain 
php > 

我缺少一個配置指令或東西,將導致此?

編輯:所以,我試着運行我的腳本使用$ php-cgi fortunetest.php,它按預期工作。也許這個問題與Apache2有關?

+2

這可能會得到stackoverflow.com – 2010-03-08 01:27:16

+0

更好的響應呀,請在計算器 – 2010-03-08 03:12:47

+0

這個問題什麼$ PATH就是Apache運行?財富在哪裏生活? – 2010-03-08 02:51:35

回答

1

不管怎麼說,我找到了解決辦法:fortune住在/usr/games,所以我認爲這可能是一個$PATH問題,但是當我做su www-data$ fortune它的工作預期,並且/usr/games$PATH。顯然,Apache使用了一個不同的$PATH變量,即使它在用戶www-data下運行,所以我重寫了腳本以使用/usr/games/fortune而不是簡單的fortune,並且它工作正常。由於fortune不是劇本的要點,這有點浪費時間,但吸取了教訓。

-1

老實說我不知道​​。但是,也許你必須說echo $fortune

0

fortune命令只是爲您輸出一個報價或着名報價。你可以簡單地將這些quotations存儲在一個文本文件中,或者如果你有一個數據庫,將它們存儲在一個表中。然後使用PHP中的rand()函數或類似函數生成一個隨機數並使用此數字來獲取引用文件/表中的那一行。這樣,您的PHP腳本不依賴於系統是否安裝了fortune命令。

0

使用像/usr/games/fortune這樣的完整路徑而不是fortune。 Apache並不總是自動擴展路徑。

<?php passthru('/usr/games/fortune'); ?> 

要找到一個完整的路徑在外殼如做which

which fortune