私は XREA のサーバースペースを使っています。
XREA では PHP は SAFE MODE 環境で動くようになっています。
このため、WordPress のファイルアップロード機能を使う際にセーフモードの制限を受けてしまっていました。
例えば、WordPress でサーバーに新しくディレクトリを作成した場合、ディレクトリの権限が Apache になってしまうのもセーフモードの制限によるものです。ディレクトリの権限が Apache になってしまうと、WordPress からファイルをアップロードすることができなくなります。
つまり PHP からディレクトリを作成すると、ファイルのアップロードが出来ないディレクトリになってしまう、ということです。これでは不便です。
ファイルアップロード機能が使いたいのならば、回避策として WordPress Japan の wiki に載っている (ファイルアップロード機能の利用 – WordPress Japan)を参考に、「PHP を CGI として動かしてあげる」もしくは「フォルダだけは手動で作っておく」という方法を使えば良かったのですが、ふと XREA のサイトを見ていたら「XREA SUPPORT BOARD – PHPをCGIとして動かす方法について」という記事が。
これは!?と思って読んでみたところ…
パーミッション:644などCGIとして必須のオーナー実行権限がなくても実行できますので、標準のモジュール版PHPの設定を引き継いで動作します。
また、先頭行に「#!/usr/local/bin/php」を入れていただく必要はありません。
とのこと。どうやら今年の春から可能になったようです。今頃気がつきました。
できるだけ手をかけずに動かすことができるなら、それに越したことはないので早速試してみました。
XREA 限定ではありますが、この方法で動かしてあげるとパーミッションの設定を変える必要がなく、PHP ファイル自体にも「#!/usr/local/bin/php」と書かなくてよいのでアップグレードの都度 PHP ファイルへに変更を加える必要がなくなります。
XREA で WordPress のファイルアップロード機能を CGI として動かす
.htaccessでカスタマイズができるので、全ての PHP を CGI として動かすのではなく指定のファイルのみ CGI として動かすことが可能です。XREA SUPPORT BOARD にも「モジュール版PHPに比べて、動作が遅くなる。負荷が掛かる。」と書かれていますので、全部を CGI として動かすのではなく、ピンポイントで CGI として動くようにしてあげるのが良いのではと思います。
ファイルアップロード機能のみ CGI として動かしたい場合は、
wp-admin/inline-uploading.php
を CGI として動くようにすればよいので以下のようにします。
- 適当なテキストエディタに下記の内容を書き、「.htaccess」と名前をつける。
2008/01/07 改訂
WP のアップロードに関する php ファイルが変わっているので、それにあわせ内容を変更<files upload.php> AddHandler application/x-httpd-phpcgi .php </files>
以下、2010/08/04 追記
WordPress バージョン 1.5 以降は、アップロードに関係している php が変更になりました。以下の様に指定すれば OK のはずです。
<files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files>
- .htaccess ファイルを、wp-admin ディレクトリの中にアップロード。
XREA で IImage browser も CGI として動かす
IImage browser については 日本語版を出してくださっている MMRT さんに
詳しく載っていますので、そちらをご覧ください。
IImage-browser 日本語版 ≪ MMRT daily life
IImage browser は簡単に言うと、WordPress のファイルアップロード機能を使いやすくして強化したようなものです。普段私はこちらを使っているのですが、やはりこれもセーフモードの制限を受けてしまうので、FTP でディレクトリをあらかじめ作りパーミッションを設定しておくという方法を取っていました。
こちらもファイルアップロード機能同様、CGI として動くようにしてあげてみました。IImage browser からディレクトリ作成をして、ディレクトリ権限を確認すると…当然ですが Apache ではなく、画像アップロードもすんなりできました :D これなら FTP でいちいちディレクトリを作ってあげる必要もなくて楽チンです。
IImage browser を CGI として動かすには、
wp-admin/iimage-browser.php
を CGI で動くようにすれば OK です。
- 適当なテキストエディタに下記の内容を書き、「.htaccess」と名前をつける。
<files iimage-browser.php> AddHandler application/x-httpd-phpcgi .php </files>
- .htaccess ファイルを、wp-admin ディレクトリの中にアップロード。
WordPress のファイルアップロード機能と併用する場合は、 .htaccess にさきほどのものと両方を書いておけば OK です。
この方法だと元となる PHP ファイルに変更を加えなくて良いので、お手軽でいいですね。
XREA をお使いの方にはお勧めです。
07/03/03 改稿
少し文章を読みやすくなるよう改稿しました。たいして変わっていなかったらスミマセン…!