Linuxで標準入力をコマンドラインのPHPで処理したいのですが、標準入力がある場合は問題なく標準入力のデータを取得できるのですが、標準入力が空の場合標準入力を取得する部分でプログラムが標準入力を待ち続けとまってしまいます。どうしたら解決できますか?Centos4.2、PHP5.0.4(Centosのextraパッケージ)を使っています。



以下のコードで行っています。

function getStdinput()
{
$stdin = ””;
$fp = fopen(”php://stdin”, ”r”);
while ( !feof($fp) ) {
$stdin .= fgets($fp, 9182);
}
fclose($fp);

return $stdin;
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ito-yu No.1

回答回数323ベストアンサー獲得回数14

ポイント45pt

http://php.net/file_get_contents

PHP: file_get_contents - Manual

$stdin = file_get_contents(’php://stdin’);

うちの環境(Linux、PHP4.3.10)では上記で問題なく動きました。cli版ではなくcgi版ですが…

id:ygs No.2

回答回数8ベストアンサー獲得回数0

ポイント45pt

http://www.wakhok.ac.jp/~maruyama/Unix92/pipe/section2.1.3.html

ɸ�����Ϥ���������

リダイレクトで指定しない場合。

標準入力はキーボードからの入力です。


Ctrl-DでEOFが入力できるので、押してみてください。

id:chillout

回答ありがとうございます。作成しているプログラムはメールを受信したときに起動されるプログラムなのでCtrl-Dは難しいです。

2006/01/24 22:35:32

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません