私はxrea+というサーバーを使ってるんですが、このサーバーでWordpress2.3.2を使用した場合、画像をアップロードしようとしても、うまくアップロード出来ないんです。しようとすると、
ディレクトリ…/wp-content/uploads/2008/01 を作成できませんでした。この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか ?
などというエラーメッセージが出ます。ふむふむ、そういえばどこかでそんなことが書いてあったっけな。xreaの場合、phpはセーフモードで動くため制限を受けてしまうのだと。
XREA で WordPress ファイルアップロード機能を利用する – Numb.
XREA では PHP は SAFE MODE 環境で動くようになっています。
このため、WordPress のファイルアップロード機能を使う際に セーフモードの制限を受けてしまっていました。
例えば、WordPress 側がサーバーに新しくディレクトリを作成した場合、 ディレクトリの権限が Apache になってしまうのもセーフモードの制限によるものです。 ディレクトリの権限が Apache になってしまうと、WordPress からファイルをアップロードすることができなくなります。 つまり PHP からディレクトリを作成すると、ファイルのアップロードが出来ないディレクトリになってしまう、ということです。これでは不便です。
んー。これを回避するには、いくつかの方法があって、一つは「wp-content」フォルダに「uploads」というフォルダを手動で作り、「707(777)」にパーミッションを変更すればよいと別のところで読んだのですが、しかし、私はアップロードの設定で、画像のアップロード先を
wp-content > uploads
にして、その下に書いてあるようにuploads配下に年月日で分けるように設定したいわけですよ。さて、どうするか…と上記のサイトを読み進めてみると、どうやらphpをcgiとして動かすことで解決できるらしい!以下詳細。
xreaのサポートでその解決方法がしめされていました。
PHPをCGIとして動かす方法について – XREA&CORE SUPPORT BOARD
動かしたいPHPがあるディレクトリ内に下記一行を「.htaccess」に追加、または、新しく設置してください。
すべての「.php」ファイルがCGIとして実行されます。
パーミッション:644などCGIとして必須のオーナー実行権限がなくても実行できますので、標準のモジュール版PHPの設定を引き継いで動作します。
また、先頭行に「#!/usr/local/bin/php」を入れていただく必要はありません。AddHandler application/x-httpd-phpcgi .php
と、いうわけなので、秀丸だとかterapadとか何でもいいのでエディタに以下のように記載して「.htaccess」という名前にして保存。もし保存が出来ない場合は、とりあえず「.htaccess.txt」という名前で保存しておきましょう。後で、アップロード後に「ファイルの名前を変更する」で「.txt」を削除すれば問題ありません。
<Files upload.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files sample.php>
</Files>
で挟むことにより、特定のphpだけCGIとして動かすことが出来ます。今回は「upload.php」というファイルだけ動かしたいので、sample.phpの部分をupload.phpと指定しました。
これではさまないと、この.htaccessを入れたフォルダ直下のphpが全部cgiとして動いてしまいます。
上記のように記載した.htaccessファイルを、wp-adminフォルダ内に放り込めば、問題なく画像がアップロードできます。
2009.07.30追記
wordpress2.8になって仕様が変わっています。「upload.php」は「async-upload.php」に変更してください。
<Files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
テスト