人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: chillout
●カテゴリ:コンピュータ
✍キーワード:CentOS FP Linux PHP コマンドライン
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ito-yu
●45ポイント

http://php.net/file_get_contents

PHP: file_get_contents - Manual

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

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


2 ● ygs
●45ポイント

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

????????????????

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

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


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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ