XREA で WordPress ファイルアップロード機能を利用する

私は 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 SUPPORT BOARD – PHPをCGIとして動かす方法について 』より引用

とのこと。どうやら今年の春から可能になったようです。今頃気がつきました。
できるだけ手をかけずに動かすことができるなら、それに越したことはないので早速試してみました。

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 として動くようにすればよいので以下のようにします。

  1. 適当なテキストエディタに下記の内容を書き、「.htaccess」と名前をつける。
    2008/01/07 改訂
    WP のアップロードに関する php ファイルが変わっているので、それにあわせ内容を変更

    以下、2010/08/04 追記

    WordPress バージョン 1.5 以降は、アップロードに関係している php が変更になりました。以下の様に指定すれば OK のはずです。

  2. .htaccess ファイルを、wp-admin ディレクトリの中にアップロード。

XREA で IImage browser も CGI として動かす

IImage browser については 日本語版を出してくださっている MMRT さんに
詳しく載っていますので、そちらをご覧ください。

IImage-browser 日本語版 ≪ MMRT daily life

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 です。

  1. 適当なテキストエディタに下記の内容を書き、「.htaccess」と名前をつける。

  2. .htaccess ファイルを、wp-admin ディレクトリの中にアップロード。

WordPress のファイルアップロード機能と併用する場合は、 .htaccess にさきほどのものと両方を書いておけば OK です。

この方法だと元となる PHP ファイルに変更を加えなくて良いので、お手軽でいいですね。
XREA をお使いの方にはお勧めです。

07/03/03 改稿
少し文章を読みやすくなるよう改稿しました。たいして変わっていなかったらスミマセン…!

82件のコメント

  1. ピンバック: fukaecorp
  2. inoccoさん、こんにちはー。
    1ファイルだけCGIで動かせるのはいいですね。ギャラリープラグインを検討しているので、そのときに試してみようと思います。またまた参考になる記事をありがとうございました。 :-)

  3. >ぼのさん
    こんにちわ~。
    CGI として動かしたい各自ファイルに修正が要らないというのは、そういうファイルがバージョンアップした時などにも楽でいいですよね ;)
    面倒くさがりなので、楽をすることには一生懸命です(笑)

    つたない記事ですが、お役に立てたら嬉しいです :D

  4. 検索サイトからたどり着きました。今年からWPをxreaで利用しはじめたので、非常に参考になりました。

    これからも巡回させていただきますがよろしくお願いします。

  5. はじめまして、こんにちわ :)
    お役に立てたようで嬉しいです。XREAはたまに難しいところがありますが、上手く設定して動かせると嬉しいですよね。

    こちらこそ、よろしくお願いします!

  6. 初めまして。検索で辿り着きました。
    こういうのは、XREAのトップページやCPにリンクを張って欲しいですよね。
    でも、そうすると、ファイル指定せずに使う人が増えて、鯖落ちする可能性もあるかなぁ。。。

    この処置のおかげで、ImageMagickも簡単に呼び出せるようになりました。
    WP以外にも、coppermine photo gallery、MediaWiki、DOKUWIKI等々、恩恵を受けるスクリプトは、計り知れないですね。

    この処置をしてくださったXREAの方々と、ここで紹介してくださった、ぼのさんに、感謝いたします。

  7. はじめまして :grin:
    この記事がお役に立ったようで良かったです。

    セーフモードのせいで上手く動かない PHP は色々あるみたいですね。このせいで「 XREA は特殊だからダメ」と言われてしまうこともあるような・・勿体ないな~!

    CGI として動かすために、わざわざ PHP のファイルに自分で何かを書き加えなくてはいけない・・という形ですとバージョンアップの都度作業が発生して面倒ですが、一度 .htaccess ファイルを作れば後は手間要らずなのがこの方法の良い点ですね。

    あ、ちなみに私はぼのさんではなくて、inocco です(笑)。

  8. inoccoさん、はじめまして。

    XREAでWordPressを試しているのですが、同様にファイルアップロードができません。
    こちらに挙げられていた通りの作業をしましたが、.htaccessをアップした時点で全てのページが「Internal Server Error」になってしまいます。

    私が落としてきたME2.20には
    「inline-uploading.php」というファイルも無いようで…
    WordPressの仕様が変わったのでしょうか?

    解決方法をご存知でしたら、助言をお願いいたします(-人-)

    ※私が使用している141番サーバーは2.20の使用条件を満たしています。
    ※アップロード先のディレクトリは
    /public_html/wordpress/wp-content/uploads です。
    属性は777にしています。

  9. 洵さん、はじめまして。

    WP のファイル名が変わったため、現在は「wp-admin/upload.php」がファイルアップロードに関する PHPファイルのようです。なので .htaccess には


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

    と書いてみてください。

    これを書いたファイルを「.htaccess」と名前をつけて、洵さんの場合ですと
    /public_html/wordpress/wp-admin
    の中にアップロードする形になります。

    サーバーエラーになる原因はしっかり分からないのですが、おそらく.htaccess の記述が違っていることが原因ではないかなと思います。以下ページが参考になるかもしれません。
    http://www.shtml.jp/htaccess/browser.html#error

    上手くいくように祈ってます! ;)

  10. inoccoさん
    アドバイスありがとうございます。
    お陰でアップロードができるようになりました :D

    .htaccessのファイル指定については、inoccoさんに教えていただいた通りに直したらOKでした。
    Internal Server Errorの件ですが、.htaccessファイルを描いたときに文字コードを「UTF-8」にしていたことが原因だったようです。
    Shift_JISで良かったのですね。

    私のホームグラウンドはMovableTypeなのですが、WordPressは設置の速さと見やすい管理画面がとっても快適ですね :)
    MTの新作も管理画面が改善されたんですが、WordPressにインターフェース似てます。参考にしたんでしょうか(笑)

    気軽な雑記などに使ってみたいと思います。
    重ね重ね、ありがとうございました。

  11. アップロードできるようになったのですね、おめでとうございます! :grin:

    .htaccess のエラーは、文字コードのせいだったのですね。

    MovableType も使ったことがありますが、WordPress とは違った良さがありますよね。最新の MT はまだ使ったことがないのですが、WP インターフェースに似てるのですね。なんだか WP ユーザーとしては嬉しいです(笑)。

    最近は WordPress もユーザーが増えて、以前より検索で事例も見つかるので使いやすいと思います。WP 楽しんでみてください :grin: また何かあればいつでもお気軽にどうぞ!

  12. はじめまして。
    WorldPressユーザーではなく、ppblogというブログを利用しているのですが、こちらの記事を参考にさせていただきました。
    ありがとうございました。

  13. >あびのすけ★さん
    はじめまして。
    同じようなところで困っている方の参考になれて良かったです ;)
    ご連絡ありがとうございました!^^

  14. ピンバック: Kemworld::Diary
  15. はじめまして。
    Xreaにwordpress MUをインストールしましたが、やはり画像のアップロードが出来ませんでした。
    こちらの記事のように

    AddHandler application/x-httpd-phpcgi .php

    と.htaccessファイルを作り、wp-adminにアップロードしましたが、
    「ディレクトリ /virtual/pmentor/public_html/wp-content/blogs.dir/1/files/ を作成できませんでした。
    この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか ?」
    というエラーが出てアップできません。wp-adminのパーミッションは777になっています。出来ましたら解決法をご教示頂けませんでしょうか。

  16. michanさん、はじめまして!

    WordPress MU のファイルを見てみましたが、ME 同様に「wp-admin/upload.php」がファイルアップロードに関する PHPファイルのようです。.htaccess には以下のように書いてあるでしょうか?


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

    また、ファイルのアップロード先はデフォルトでは wp-content/uploads/ の中かと思います。ですので、wp-admin のパーミッションではなく、wp-content/ と、wp-content/uploads/ のパーミッションを確認してみると良いかと思います。

    あとは上のほうで洵さんがコメントくださっていますが、.htaccess の文字コードが UTF だったものを Shift_JIS にしたところ上手くいったという例もあるようなので、文字コードも確認してみると良いかもしれません。上手くアップできるようになると良いですね :grin:

  17. 早速のご回答ありがとうございます。
    .htaccseeファイルは言われるとおり作成して、wp-adminにアップしたのですが、何回やり直しても同じ結果でした・・・ :oops:
    ftpでサーバーの中のファイルを色々見ていて、ようやく原因が分かりました。 :idea:
    なんと・・・、エラーのとき作成された「wp-content/blogs.dir」が残ったままだったのです!これでは何回トライしても、ディレクトリの権限が Apache のままになっていて、「パーミッションが違ってる!」というエラーになっていた訳です。この「blogs.dir」フォルダを削除したところ、無事アップできるようになりました。大変お世話をおかけし申し訳ありません。
    本当にありがとうございました。 :razz:

  18. michan さん、こんばんはー。
    無事上手く動くようになったようで良かったです :grin:

    なるほど、Apache 権限のディレクトリが作られてしまったのを残してあったのでエラーになったんですね。.htaccess ファイルの設置に関するエラーなのかなあと思い、.htaccess のことばかり考えていたのでディレクトリに考えが至っていませんでした。お力になれずスミマセンでした :oops:

    解決のコメントありがとうございました! :wink:

  19. 初めまして
    こちらの記事を参考に.htaccessファイルを作り、アップロードしてみたのですが、新たに
    「Warning: Cannot modify header information – headers already sent by (output started at /virtual/time/public_html/blog.timemonarch.jp/wp-config.php:1) in /virtual/time/public_html/blog.timemonarch.jp/wp-includes/pluggable.php on line 391」
    というエラーが出るようになってしまいました
    解決法ご存知でしたら、教えてください
    ちなみに、verは2.3.2日本語版です
    よろしくお願いします

  20. 初めまして、こんにちは。 :grin:
    エラーの内容を調べてみたのですが、どうやらPHPのheader 関数が使えないという意味のエラーのようです。
    http://q.hatena.ne.jp/1168608777

    おそらく、Timeさんのエラーは下記URLのエラーと同様のものだと思うので、このサイトの対処法で解決できるかもしれません。
    http://lov.ciao.jp/2007/08/24/wp-troubleshooted/

    このエラー、何かのはずみでPHPファイルの最初に空欄や文字が入ってしまった場合に起きるようです。
    もしPHPファイルを修正したり文字コードを指定したりが苦手なようでしたら、一度WordPress配布先からダウンロードしなおしてアップすると手っ取り早いかなと思います。

    うまく直ってエラーが消えると良いですね :)

  21. こんばんわ
    文字コードを変にかえてたのが原因でした!
    わざわざお調べいただき、ありがとうございました :grin:

  22. Timeさん、こんばんはー :grin:
    なるほど、文字コードの関係でエラーになってしまってたのですね。
    うまくいったようで良かったです! :wink:

  23. ピンバック: Abi Labo BLOG - ppblog
  24. ピンバック: HAAYA
  25. 管理人様、情報をありがとうございます!ちょっとmacで手こずったので情報を加えさせていただきます。
    .htaccessファイルを作るエディタは「テキストエディタ」では上手く行きませんでした。「mi」を使って文字コードをShift JIS、CR+LF(Win)に設定したら上手く行きました。文字コードの設定が違うとダメなようです。
    あとFetchではアップできなかったのでDreamweaverのFTPでアップしました上手く行かない人はやってみて下さい。

  26. pistachioさん、はじめましてー。
    有益な情報ありがとうございます :)

    文字コード、改行コードを気をつける必要があるようなので、それに対応したエディタが必要ということですね。mi はフリーですし良いですよね :grin:

    また、.htaccess のように「 . 」から始まるファイルがアップできない場合はa.htaccess 等、最初に何か英数字を付けてアップした後に FTP でリネームして .htaccess にすることでうまくいくこともあります。

  27. ピンバック: Shio-log
  28. ピンバック: PCオタ.com

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です