WordPressのプラグイン更新・インストール
インストール直後のWordPresssのダッシュボードを見ると、
早速プラグインの更新がありました。
とりあえず更新してみます。
サーバーがSSHでの接続しかできない場合は、下記を参照してください。
更新を押してみると下記のような画面になります。
これはワードプレスをインストールした初期の状態だと、パーミッションが適切に設定されていない為、
必要なディレクトリを作成できない。書き込みが出来ない為に発生するエラーになります。
簡単にパーミッションの概要
現在のパーミッション設定を確認してみます。
#ls -al drwxr-xr-x 5 user user 4096 2月 19 23:24 2015 wp-content #cd ./wp-content/ #ls -al drwxr-xr-x 4 user user 4096 2月 19 23:24 2015 languages drwxr-xr-x 4 user user 4096 2月 19 23:24 2015 plugins drwxr-xr-x 5 user user 4096 2月 19 23:24 2015 themes
一部のファイルを省略していますが、更新の対象となる、「wp-content」ディレクトリと、その中にあるディレクトリの一覧を表示させて確認しました。
最初の「d」はファイルタイプとなり、この場合はディレクトリを意味します。
その後の「rwxr-xr-x」がパーミッションです。
パーミッションは3文字ずつで区切られ
最初の3文字が「所有者」
次の3文字が「グループ」
最後の3文字が「その他のユーザ」
となります。
そして、その3文字がそれぞれ
r-読み込み
w-書き込み
x-実行
という権限を持ちます。
また、数字で表す事も多く、
r-読み込み-4
w-書き込み-2
x-実行-1
となり、合計値で表す事もできます。
例えば、所有者、グループ、その他のユーザの全てが全権限を持っていた場合、
rwxrwxrwx
となり、数字で表すと
777
となります。
とすると、今回のrwxr-xr-xは数字で表すと
755
という事です。
簡単ですがこれだけは抑えておいてください。
wp-contentのパーミッション設定
そもそもなぜパーミッションのエラーが発生するかと言うと、
先ほどのlsの結果でも分かる通り、インストールの際にuserでサーバーに接続しWordPressのインストールを行った為、
WordPressのファイルの全ての所有者とグループがuserになってしまっている事が原因です。
ダッシュボードから操作する場合は、apacheとしてディレクトリの作成や書き込みを行おうとするので、権限が無い為エラーになります。
色々なサイトを見てみると、wp-contentのユーザーとグループをapacheに変更してしまうという方法がありますが、
これを実践してみると、テーマの編集等をした際にSFTP等でのファイルのアップロードが出来なくなってしまいます。
編集等は全てWordPress上で行う場合には、ユーザーとグループをapacheに変更してしまっても良いと思いますが、
ここではパーミッションの変更で対応してみたいと思います。
apacheは所有者でも無く、グループにも属していないので、その他のユーザになります。
ですので、その他のユーザに書き込みと実行のの権限も与えます。
無駄なアクセスは無い方が良いので、不必要なグループのパーミッションも変えてしまおうと思います。
そうすると、パーミッションは次のようになります。
rwx—rwx(707)
こうする事によって、wp-contentディレクトリ内へのディレクトリの作成や書き込みが行えるようになります。
また、併せてwp-content内にある、pluginsディレクトリのパーミッションも同様に変更してみます。
#ls -al drwxr-xr-x 5 user user 4096 2月 19 23:24 2015 wp-content #chmod 707 wp-content #cd wp-content/ #chmod 707 plugins
どうやら、今回更新しようとしている、akismetディレクトリと更にその下の階層にもディレクトリがあり、
全ての権限を変更しないと古いプラグインを削除できませんでした。
という事で、最初からインストールされているプラグインの場合は少しめんどくさく、
chown -R apache:apache plugins 所有者を一旦apacheに変更したり、パーミッションを777にしたりと試してみたのですが、
中途半端にインストール失敗を繰り返していた為、ダッシュボードにも表示されなくなってしまった為、akismetディレクトリを削除しました。
#cd ./plugins/ #rm -rf akismet