どうも、くーへいです。
先日、WordPressにてある問題に遭遇しましたので、メモがてら少し記事を書かせていただきます。
WordPressで画像がアップロードできない!
こういった状況は、まぁまぁ聞く話です。
よくある原因としては、wp-contentのパーミッションを変更すると直るとか、キャッシュ系のプラグインが邪魔してるとか・・・。
しかしながら、今回私が経験した状況は少し異なります。
話しが少々ややこしいですが、聞いてください。
どういう環境なのか?
サイト自体はWordPressで作成した、一般的なサイトです。
特殊な点と言えば、VCCWを使用してローカルにて構築作業を行った後、WordMoveを使用して本番環境にアップロードした事です。
どういう現象なのか?
端的にいえば、いくつかの環境で画像をアップロードできませんでした。
画像のアップロードは、CustomFieldTemplatesを用いた方法、投稿に埋め込む方法、管理画面サイドバーの「メディア」からアップロードする方法、いずれも失敗します。
エラーメッセージはアップロード方法によって異なりますが、基本的にはアップロードできなかった旨を示すだけで、ヒント的なものは有りません。
サーバーのログファイルにも何も残りませんし、WordPressのログファイルにもエラーメッセージはありませんでした。
ちなみに、画像をアップロードできない以外は特に不具合はありません。
テストした環境は以下の通りです。
人物は仮で名前を付けてみました。
人物 | OS | LAN | ブラウザ | アップロード可否 |
---|---|---|---|---|
くーへい | Windows8.1 | 社内有線LAN | ChromeおよびInternetExplorer11、Firefox | ◯ |
くーへい | Android4.4.2 | 社内無線LANおよびdocomo回線 | Chrome | ◯ |
社員A | Windows7 | 社内無線LAN | Chrome | × |
社員A | Mac | 社内無線LAN | Chrome | ◯ |
社員A | Mac | 自宅無線LAN | Chrome | × |
社員B | Windows8.1 | 社内有線LAN | Chrome | × |
ご覧のとおり、OSからLANの環境、ブラウザに至るまでバラバラです。
OSの違いやLANの違い、ブラウザの違いが偏っていれば、ある程度の目星がつきますが、ここまでバラバラであった時点でお手上げです。
結局原因はプラグイン
環境に依存せず、ログにも残らない時点で問題の切り分けは不可能です。
残りは、プラグインの有効無効くらいしか対策の取りようがありませんでした。
この時点でインストールされているプラグインは、おおむね他のサイトでも使用されているものでした。
しかしながら、1つだけ普段は使用していないプラグインをインストールしていることに気づいたのです。
それが、題名にも記載したDynamic Hostnameプラグインだったのです。
物は試し・・・ということで無効にしてみたところ、問題無く画像がアップロードできるようになりました!
とりあえず問題自体は解決です。
Dynamic Hostnameプラグインの何がダメなのか?
結局、これが分からないことには根本的な解決にはなりません。
Dynamic Hostnameプラグイン自体は、VCCWを使用すると自動的にインストールされるプラグインです。
VCCWでは、ローカル環境にてWordPressを簡単に構築するために作成されています。
ローカル環境でWordPressを作成するため、当然のことながらURLは仮の状態でインストールすることになるのです。
これを本番環境に設置する際、URLの置換等が発生しないようにするのがDynamic Hostnameプラグインの役割です。
ではなぜ、上記のような問題が発生したのか?
その答えは残念ながら出ていません。
ただ、上記の現象を見るかぎり、このプラグインがルーティングに何かしらの影響を与えたと推察しますが・・・。