2010-03-08 54 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