XREAのレンタル共用サーバーに設置したWordPressでメディアの一括削除ができない
WordPressのバージョンは2.7.1です。
いつも書いてる通りXREAのサーバーはあまり触りたくないのですが、依頼なので仕方ありません。
XREAでWordPressを動かす場合、モジュール版PHPではパーミッションの関連上ファイル操作に難があり、普通に設置しただけではWordPressから画像などをアップロードすることが出来ません。(PHPのセーフモードがらみの問題で、仕様ですね)
そこで、管理画面は(もしくはアップロード用スクリプトのみを)CGI版PHPで動かす設定を.htaccessで施すことによってその問題を回避する方法があります。
まぁココまでは”XREA WordPress”などで検索すれば幾らでも出てくる情報なんですが、その設定をやった上で、今回新たに「メディアライブラリの一覧で、個々のファイルの左にあるチェックボックスを複数チェックして、一括して削除しようとしたときに、サーバーからの応答が無くなる」という問題が発生しました。
応答がなくても、実際によく調べてみると、ファイルの削除もデータベースの操作も完了してるっぽかったので正確には「削除できてる」んですが、削除ボタン(実際には適用ボタンですか)を押してから、ブラウザが延々といわゆる「読み込み中」のまま、という状態です。
HTTPヘッダも何も返ってこない状態。
該当部分のソースを読んでみたり色々テストしていくと、削除処理をした後のリダイレクト処理部分で”wp_redirect”という関数が呼ばれており、どうもその関数が上手く動いてない様子でした。
ちなみにモジュール版なら”wp_redirect”関数自体は普通に動作します。
一括削除処理だけモジュール版で動作するようにしようかと一瞬思いましたが、そのwp_redirect関数を含むファイルって、upload.phpなんですよね。
つまりupload.phpに表示・追加・削除の機能が一つにまとめられてるので、htaccessのfilesディレクティブで切り替える方法が使えません。
とりあえず今回はwp_redirectを呼んでる行をコメントアウトして、
<html>
<header>
<title>wordpress redirect</title>
<meta http-equiv=”Refresh” content=”0; URL=$location”>
</header>
<body>
しばらくお待ち下さい。
</body>
</html>
という内容を返すようにしました。
文字化けるかもしれないのでもっとちゃんとしたソースを返すようにした方がいいです。
他にもwp_redirect関数を呼び出してる部分があったのですが、それらはちゃんと動いてるようでした(ホントかな)のでそのままです。
一応調査の中で、
header(‘Location: http://example.com/’);
などと一行だけ書いたスクリプトをCGI版で動かしてみたりしましたが普通に動きました。
まぁ、これが動かなかったら大問題になりますけど。
原因は複合的なんでしょうね。
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.