2008/5/31 土曜日

アップロードの問題 PHP セーフモード

Filed under: 開発技術関係 — admin @ 15:53:53

イラスト 新規登録システムの修正版をやっとのことで開発することができた。一か月もかかってしまった・・・。 orz

今回の登録システムはこれまでJPGのみであった登録システムを修正して、新たにアニメーションGIF、PNGファイルを対応させるといったもの。そこで問題になったのはサーバ側のPHPがセーフモードで動作しているという点だ。

セーフモードPHPの場合、PHPスクリプトを使用してアップロードした場合の障害としては、すべてのパーミッションが600になり、所有者がApacheになってしまい、呼び出すことはおろか、URLによる直接指定でも表示できなくなってしまうというもの。

アップロードしたものは使うことができないのか!?

といった問題点があったが、調べれば調べるほど、どうも セーフモードPHPで動作しているレンタルサーバはすべて同様の症状が出るみたいだ。Photoip.Netが動いているXREAサーバの場合、.htaccessファイルを設置できるため、 PHPファイルを無理やりCGIファイルとして認識させることで強制的に所有者(chmod関数)を変更することができる。また、この方法はPHPファイルに何も追記することなくできるのでソースを汚さなくても済む。

◆方法は以下に示すとおり(XREAサーバの場合、ほかのサーバでは使えるかどうかはわからない。)

1.同一ディレクトリに .htaccessを作成し、CGIとして動かしたいPHPファイルを指定し保存する。

・.htaccess の内容

<files test.php>
AddHandler application/x-httpd-phpcgi .php
</files>

※test.phpはCGIとして動かしたいPHPファイル名 。同一階層へ置く必要がある。また、この場合はPHPの負荷が高くなるので注意する必要がある。

上記のファイルを同一階層に置くだけでchmodコマンドが使えるようになる。 (私はアップロードしたファイルからサムネ画像を生成するためにGDを使う必要があり、壁にぶち当たっていた…)

HTML convert time: 0.186 sec. Powered by WordPress ME