メディアがアップロードできなかったお話
1年ぐらい前にマイグレしたとあるサイトで画像をアップロードできない現象が発生しました。
マルチサイトじゃなくてサブディレクトリで複数WordPressを設置しているややこしいサイトです。
いつからこうなったか確認したところ移行してから初めて実施したとのこと。
更新頻度少なすぎ!
アップロードするファイルの保存場所
まずは再現、エラーメッセージが下記。
ディレクトリ***を作成できません。この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか?
ということでパーミッションを確認。
特に問題無し。
777で試してもエラー。
何かがおかしいので既存の画像をチェックしてみると、保存場所が親ディレクトリになっている。
例えば、test1.hoge/new-hoge/というディレクトリにWordPressがあったら、
普通は/test1.hoge/DocumentRoot/new-hoge/wp-content/uploads/に保存されるのに、ここは/test1.hoge/DocumentRoot/uploads/に保存されていました。
親ディレクトリってそういう意味なのかなと思いDocumentRootとuploadsのパーミッションを777にするとアップロード成功!
ただこれだとセキュリティ的にアレなんでどうにかしたい。
でググった結果、wp_optionsのupload_pathが保存場所になるとのこと。
アップロードをこのフォルダーに保持します (WordPress のルートディレクトリからの相対パス)
デフォルト: NULL
データ型: 文字列 (相対パス)
通常NULLになっているはずなのに、このサイトでは「../uploads」という値になっておった。
「wp-content/uploads」に修正してみたところパーミッションは絞ったままアップロード成功。
更に調べてみるとupload_url_pathという項目もあった。
アップロードフォルダーへの URL パス (デフォルトではブランク。編集するには 「すべての設定」画面を使用する。)
データ型: 文字列 (URL パス)
ここが「https://test1.hoge/uploads/」となっていたので空にしてあげた。
するとブラウザでも表示を確認することができた。
ややこしい構成のサイトは設定もややこしい。
コメント