[PHP-users 34664] Re: php.ini がopenされているのに読み込まれない[原因判明]

Hideo NAKAMITSU nomo @ bluecoara.net
2009年 7月 24日 (金) 11:23:35 JST


中満と申します。

On Fri, 24 Jul 2009 09:00:33 +0900
大瀧保広 <y.ohtaki @ mx.ibaraki.ac.jp> wrote:

> Solaris の fopen の仕様に引っかかっていました。
> 32bitアプリでは255より大きいファイルディスクリプタでは
> ファイルにアクセスできないようです。

Solarisのファイルディスクリプタの上限は変更可能です。

> (以下、fopen のマニュアルからの該当部分の抜粋)
> 
> 	Normally, 32-bit applications return an  EMFILE  error  when
> 	attempting  to  associate a stream with a file accessed by a
> 	file descriptor with a value greater than 255. If  the  last
> 	character  of mode is F, 32-bit applications will be allowed
> 	to associate a  stream  with  a  file  accessed  by  a  file
> 	descriptor  with  a  value  greater than 255. 
> 
> open は成功してるのに、fopenがエラーになってたのですね。
> 
> (最終的にfopenに渡る)モードを"r" から "rF"に直して歩くか、
> 64bitアプリとしてビルドする(PHP? Apache?)ことになりそうです。

おそらくそれぞれのバーチャルホストでログを出力しているため
ファイルディスクリプタが足りなくなっているのだと思いますが、
Apacheをビルドする際、FD_SETSIZEの値を8192など大きめの値に
するだけでエラーは解消するのでは無いでしょうか?

# Solaris + バーチャルホストという組み合わせだと、誰もが通る道ですよね、これ。


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