[PHP-users 18700]Re: CLI版での標準入力

Ryosuke Hosoi hosoi @ ryo.com
2003年 10月 29日 (水) 22:45:15 JST


ほそいです

From: Hirotaka Nagai <fw-nagai @ infobb.com>
Subject: [PHP-users 18696] CLI版での標準入力
Date: Thu, 30 Oct 2003 15:18:39 +0900
Message-ID: <20031030145656.01AE.FW-NAGAI @ infobb.com>


> #!/usr/local/bin/php
> <?php
>   echo "yes or no ?(y/n) ";
>   $ans = trim( fgets(STDIN,256) );
>   echo "\n" . $ans . "\n";
> ?>

試したところ、ウチでは
--ここから
yes or no ?(y/n) y

y
--ここまで
となりました

> 【希望する動作】
> yes or no ?(y/n) y  ← 'y'をキーボードから入力
> y

y+Enterを入力してるので
>   echo "\n" . $ans . "\n";
の最初の\nはいらないかも。

> 【実際の動作】
> y                    ← 'y'をキーボードから入力
> yes or no ?(y/n)
> y

implicit_flushディレクティブはCLIだとTRUEに上書きされるらしいので
これは、出力バッファリングがONになってるからかも
対策としては
1. CLI用のphp.iniを別に用意して、そちらでは出力バッファリングをOFFにする
 -> php.iniと同じディレクトリにphp-cli.iniをつくるのが楽かも
2. $ansをとるまえに ob_flush() flush() をする
などでしょうか。

> 
> 【環境】
> OS:RedHat Linux 9
> % php -v
> PHP 4.3.3 (cli) (built: Aug 26 2003 10:25:48)
> Copyright (c) 1997-2003 The PHP Group
> Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
>     with the ionCube PHP Accelerator v1.3.3r2, Copyright (c) 2001-2002, by Nick
> Lindridge

余談ですが、ionCube PHP AcceleratorってCLIでも有効なんですかね?
たしかCLI/CGI版では無効というかキャッシュされない、だった記憶が。。。

-- 
 Ryosuke Hosoi / 細井 良祐
 mailto:hosoi @ ryo.com http://www.ryo.com/
 PGP Public Key http://www.ryo.com/ryo/hosoi.ryo.com.asc
 fingerprint = 4F39 61B0 2034 3A5C DFE8  FBCB 7B99 90CF EBE1 A3F3



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