我有以下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上?
答案 0 :(得分:1)
无论如何,我找到了解决方案:fortune
住在/usr/games
,所以我认为这可能是$PATH
问题,但当我su www-data
并且$ fortune
1}}它按预期工作,/usr/games
位于$PATH
。显然,Apache正在使用不同的$PATH
变量,即使它在用户www-data
下运行,所以我重写了脚本以使用/usr/games/fortune
而不是普通fortune
并且它有效。由于fortune
不是剧本的重点,这是浪费时间,但是吸取了教训。
答案 1 :(得分:0)
fortune
命令只为您输出报价或着名报价。您只需将这些quotations存储在平面文本文件中,或者如果您有数据库,则将它们存储在表中。然后使用PHP中的rand()函数或类似函数生成一个随机数,并使用此数字在引号文件/表中获取该行。这样,您的PHP脚本不依赖于系统是否安装了fortune
命令。
答案 2 :(得分:0)
使用/usr/games/fortune
之类的完整路径,而不只是fortune
。 Apache并不总是自动扩展路径。
<?php passthru('/usr/games/fortune'); ?>
要在shell中查找完整路径which
,例如..
which fortune
答案 3 :(得分:-1)
老实说,我不知道。但是,您可能需要回复$fortune
。