[PHP-users 14967]標準入力が、リダイレクトからは受け取れるがパイプから受け取れない?

AM iroha168 @ anet.ne.jp
2003年 4月 30日 (水) 11:58:15 JST


初めまして。シバと申します。
どなたかお力添えよろしくお願い致します。


PHPにて標準入力がリダイレクトで受け取れるが
パイプで受け取れない状態で困っています。

stdin.phpが標準入力をstdin.logに書き出す機能を持つとして

cat test.txt | stdin.php

ではstdin.logが空になっています。

stdin.php < test.txt

ではstdin.logにtest.txtの内容が書き出されます。

リダイレクトでファイルが書き出せるので、
スクリプトは問題ないように思います。(多分)
設定等を疑っているのですが、
何か心当たりのある方いらっしゃいますでしょうか?


・環境
  Redhat7.3
 PHP 4.3.1('./configure'
        '--with-apxs=/usr/local/apache/bin/apxs'
        '--enable-zend-multibyte'
        '--enable-mbstring'
        '--enable-mbstr-enc-trans'
        '--enable-mbregex'
        '--with-pgsql'
        '--without-mysql')

・使用スクリプト
----------------------------------
 stdin.php ----------------------------------
#!/usr/local/bin/php -q
<?php

//標準入力からの読込
$source = GetSTDIN();

$fp = fopen("stdin.log","a");
fseek($fp,SEEK_END);
fwrite($fp,$source);
fclose($fp);

//****************************************
//標準入力のデータ読込
// 引数 なし
// 戻値 標準入力データ文字列
function GetSTDIN() {
  $stat = fstat(STDIN);

  if ($stat["size"]>0)
      return fread(STDIN, $stat["size"]);
  else {
      echo "STDIN is nothing.\n";
      exit;
  }
}
?>
----------------------------------------------------------------------------
----

----------------------------------
test.txt  ----------------------------------
test1
test2
test3
----------------------------------------------------------------------------
----



PHP-users メーリングリストの案内