1

次のコードは、"php test.php" (PHP 5) を実行している Windows 7 のコマンド プロンプトから実行すると機能します。出力は単に "test" です。しかし、php (v5) が localhost Apache サーバー (v2.2) で実行されているブラウザーで実行されると、機能しません。つまり、出力がありません (ストレート エコー、フラッシュ、AJAX メソッドの両方を使用)。プロセスが正常に開始されました (proc_get_status を使用して検証されました) (私にとっては、アクセス許可の問題も問題ないことを意味します)。パイプと関係があるようです。何か案は?私が見逃しているよく知られたものはありますか?

<?php
$descriptorspec = array(
   0 => array("pipe", "r"), 
   1 => array("pipe", "w")
);
$process = proc_open("java Test", $descriptorspec, $pipes, null, null,array('bypass_shell'=>true));
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($process);
?>
4

1 に答える 1

4

おそらく、Apache サーバーは非対話型サービスとして「システム」として実行されます。多くのことが機能せず、おそらくコンソール アプリケーションにもパイプします。また、コンソール (動作する場所) にはユーザー (自分の) 権限があり、生成されたコンソールにはシステム権限があるため、権限の問題が発生する可能性があります。

パイプが本当に必要な場合は、(システムではなく) ユーザーとして apache を実行し、デスクトップの対話を有効にするサービスを構成することができます。

于 2013-03-08T13:03:33.923 に答える