我在我的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运行这些命令的最佳方法是什么?
答案 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库解决了我的问题。我似乎对我的服务器配置似乎不太可能这些功能运行良好。谢谢你的帮助:))