[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 メーリングリストの案内