0

PHP コード (Joomla モジュール) でパススルー関数を実行しようとすると問題が発生します。コードは次のとおりです(これは単なるスニペットです)

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 (コマンドが見つかりません) が含まれます。これらのコマンドへの絶対パスをパススルー機能に追加しようとしましたが、役に立ちませんでした。興味深いことに、ターミナルから ssh および php コマンドを介してコードを実行するとうまく動作しますが、アプリケーション コンテキストから呼び出されるとうまく動作しません。誰か私が何をすべきか知っていますか?ありがとう

いくつかの編集.. safe_mode は Web サーバー上にあり、/usr/bin および /bin/ フォルダーを認識しないため、php からこれらのコマンドを実行する最良の方法は何ですか?

4

3 に答える 3

2

usr/bin/grepコマンドへの有効なパスのようには見えません。

/最初のコマンドが見つかったとしても、2 番目のコマンドへのパスの先頭に欠落があると、コマンドが見つからないというエラーが説明される場合whoisがあります。

于 2011-04-06T11:09:26.717 に答える
1

Web サーバー / 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 に答える