0

我在尝试在我的 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 命令直接从终端运行代码时,它运行良好,但是从应用程序上下文调用它时却没有。有人知道我应该怎么做吗?谢谢

一些编辑..安全模式在网络服务器上看不到 /usr/bin 和 /bin/ 文件夹,那么如何从 php 运行这些命令的最佳方法是什么?

4

3 回答 3

2

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

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

于 2011-04-06T11:09:26.717 回答
1

您是否查看过您的网络服务器/php 是否正在运行 chroot?

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";
}

应该给你一个线索。

于 2011-04-06T12:03:01.783 回答
0

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

于 2011-04-06T22:32:15.737 回答