IISとApacheでのPHPの挙動

自分は開発環境がIISで、phpプログラムもIISで動かす。

ところが、開発時問題ないと思っていて、レンタルサーバにあげるとうまく動作しないということが起きる。

 

「FPDF error: Some data has already been output, can’t send PDF file」というのでずいぶん困った。IISでは何も問題ない。そして、新しく作ったプログラムのもとになるプログラムは普通に動いている。何が違うのか。

 

実は、phpファイルをutf-8で保存するのだけれど、その時に文頭にutfの識別文字0xef 0xbb 0xbfが入っているかどうかだけの違いだった。utf-8(no signature)で保存すると正常に動いた。

同じようなことが何回かある。

 

例1)

<php?で始まる文頭にスペースや改行があるかどうか。スペースや改行があってもIISでは問題なく動く。ところがapacheでは動かない。

例2)

デバッグのためにecho文を入れていることがある。これでIISで動くのに、Apacheで動かないケースがある。

 

いずれの場合もpdfだったり、csvだったり、リダイレクトだったり、通常のhtml以外のレスポンスするプログラムだ。本番環境のレンタルサーバでは、pdfやリダイレクトのレスポンスがある前にhtmlのレスポンスがあったものとして、エラーになるのに、IISではエラーにならないのです。

どちらがいいんでしょうね。IISはバッファのレスポンスを返す前に、他のレスポンスを優先するような、何らかの判断が働いていると考えられる。そして、実はこれは案外便利なんだよね。

Accessで行くかSQL Serverにするかは、管理の問題

Accessデータベースと比較できるものは沢山はない。ファイルメーカーぐらいだろう。

データテーブルを管理できて、それを条件に合わせて抽出し、表示や入力するためのフォームやレポートを一つのソフトの中で作ることができる。とても便利だ。複雑な入力システムを作ることもできる。 続きを読む