• このエントリーをはてなブックマークに追加

WordPress ファイルアップロード出来ない件、SELinuxが悪さしてない?

  • このエントリーをはてなブックマークに追加

こんにちは。Ushioです。

検証用のWordpressを構築していて、ファイルのアップロードがどうしても出来なくてハマったので記事にしたいと思う。2週間は業後の時間、睡眠時間が削られた…。

スポンサーリンク
Sponsords Link

WordPressにファイルがアップロード出来ない

WordpressSELINUX2

WordPressエラー

・ディレクトリwp-contents/uploads/20xx/xxを作成出来ませんでした。この親ディレクトリのアクセス権はサーバによる書き込みを許可していますか?

WEBサーバのエラーログ

2016/04/13 22:06:53 [warn] 1604#0: *40 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/2/00/0000000002 while reading upstream, client: 192.168.57.1, server: localhost, request: “GET /site1/wp-admin/load-scripts.php?c=0&load%5B%5D=hoverIntent,common,admin-bar,underscore,customize-base,customize-loader,svg-painter,heartbeat,wp-auth-check&ver=4.5 HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “192.168.57.200”, referrer: “http://192.168.57.200/site1/wp-admin/about.php”

Google先生に質問していろんな記事、Wordpressのフォーラムも見たが、大抵「パーミッション(権限)」ばかりだが、私のケースは権限以外の問題だった。

WordPressのフォーラム

発生した検証環境

今回のケースは自分でOS(Linux)をインストールしたケースだったため上述の権限の問題で解決出来なかったのだろう。今回は仮想マシンを用いた環境。

・ホストPC MacBook Air (OS10.11.4)

・VirtualBox

・CentOS 6.7

・ミドル:nginx1.8.1、mysql 5.6、php 5.3.3

・Wordpress 4.5

結論

画像がアップロード出来ない問題、SELinuxが悪さしていた。

結論はSELinuxが有効だったため、コンテンツフォルダへの書き込みが制限されていた。SELinuxを設定もしくは環境次第だが停止すれば動作することが分かった。

Conohaでレンタルサーバ(VPS)を借りてみたが、OS渡しの時点で、SELinuxはDisabledになっていた。ここは賛否両論だと思う。一応、セキュリティ上のために動いているモジュールであり、パブリックな商用環境で無闇に停止すべきではないだろう。

とはいえ、SELinuxの設定はなかなか難しく、環境に次第なところもあるため今回は手っ取り早く停止する手順で紹介しよう。真似してくれる人は自己責任で。(一応ね)

切り分けと、画像アップロード復旧の流れ

◆インストールしたてのWordpressに画像をアップロードしてみる。

WordpressSELINUX1

すると…

WordpressSELINUX2

なになに、「ディレクトリwp-contents/uploads/20xx/xxを作成出来ませんでした。この親ディレクトリのアクセス権はサーバによる書き込みを許可していますか?」だと?

◆サーバにログインして確認

wp-contents/uploads

uploadsのアクセス権は”755”

とりあえず、Wordpressのフォーラムにもあるように757にしてみた。

が、状況変わらない…

◆ディレクトリwp-contents/uploads/20xx/xx自分で作ってみた。

しかし…

WordpressSELINUX4

なになに、「アップロードしたファイルをwp-contents/uploads/20xx/xxに移動出来ませんでした。」だと…?

ushio_talk mini2

ここからはエラーログを確認したり、パーミッションを777にしたりいろいろ試したが出来ず。OSの問題か、ミドルの問題か、3回OSからインストールし直したり…

結果どうにも分からない。本職サーバエンジニアのZacoMura君に聞くしかない。

mura

うーんなんじゃろうね。

<一通り上記を試す>

なんじゃろうね。できんね。ワードプレスをデバッグモードにしてみよう。

…?

なんじゃろうね、できんわ。デバッグモードにしても、ファイルが生成されんね。なんじゃろうね。これなんじゃ。わからんわ。

<かれこれ3時間>

ん?いやまさかな。
[root@cent6 ~]# getenforce
Enforcing

まさかのこれじゃ。たぶんこれじゃわ。

ushio_talk mini2

なんなんじゃ?

mura

SELinuxじゃ。俺とか開発する時は大抵OSインストール時点で止めておくんよ。開発時点で悪さするから。まさかの初歩的な部分のやったね。

SELinuxの停止方法(非推奨)

◆/etc/sysconfig/selinux  の下記箇所を編集

# SELINUX=enforcing #変更の元
SELINUX=disabled      #変更の後

◆サーバを再起動

[root@centos ~]#shutdown -r now

◆無事にファイルアップロード出来ました。

 WordpressSELINUX6

今回、言い訳じゃないが例えLPIC取っても、実際にサーバに触れていないと「宝の持ち腐れ」「資格も名ばかり」になってしまうことを痛感。そうです、まだまだ雑魚なんです。精進します。

ZacoUshio

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link