服务器上的passthru问题

时间:2011-04-06 11:01:48

标签: php joomla passthru

我在我的php代码(Joomla模块)中尝试运行passthru函数时遇到问题。代码如下(这只是一个片段)

ob_start();
passthru("/usr/bin/whois 85.70.231.130 | /usr/bin/grep 'address:'",$code);
$whoisData = ob_get_contents();
ob_end_clean();
$whoisData = str_replace("address:", "", $whoisData);
$whoisArray = split("\n",$whoisData);
echo trim($whoisArray[1]);    

当我在我的本地主机上运行它时,它回应它应该是什么,但当我在生产服务器上运行此代码时,它没有回应,$ code变量包含127(找不到命令)。我尝试将这些命令的绝对路径添加到passthru函数中,但它没有帮助。有趣的是,当我通过ssh和php命令从终端运行代码时,它运行良好,但是当它从应用程序上下文调用时却没有。有人知道我应该做什么吗?谢谢

一些编辑.. safe_mode已启用 webserver没有看到/ usr / bin和/ bin /文件夹,那么从php运行这些命令的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

usr/bin/grep看起来不像命令的有效路径。

第二个命令路径开头的缺失/可能会解释命令未找到错误...即使找到第一个whois命令也是如此。

答案 1 :(得分:1)

你看过你的webserver / php是否正在运行chrooted吗?

print_r(glob('/*'));
if (file_exists('/usr/bin/grep') && file_exists('/usr/bin/whois')) {
   print "maybe its a permissions thing?\n";
} else {
   print "can't see executables required\n";
}

应该给你一个线索。

答案 2 :(得分:0)

所以我已经用phpwhois库解决了我的问题。我似乎对我的服务器配置似乎不太可能这些功能运行良好。谢谢你的帮助:))