wordpress 更新失敗就會看到下面的錯誤訊息,只需要修改檔案權限即可.
Installation failed: Unable to locate WordPress content directory (wp-content).
或是
由於複製檔案失敗,所以無法安裝更新。這通常是由無效的檔案權限所致。: xmlrpc.php, wp-comments-post.php, index.php, wp-mail.php, wp-blog-header.php, wp-links-opml.php 安裝失敗
測試環境為 Ubuntu16.04 x86_64(虛擬機)
前言
更新 WordPress , plugin , theme 時需要輸 Linux 系統的使用者帳號與密碼,但實際在運作的是 httpd process 的使用者 (Ubunut 為 www-data , RHEL/CentOS 為 apache),下面是透過 ps 指令來觀察.
root@ubuntu:~# ps aux | grep apache2 root 1509 0.0 2.8 287188 27992 ? Ss 00:55 0:00 /usr/sbin/apache2 -k start www-data 2832 0.0 3.2 293180 32920 ? S 01:00 0:00 /usr/sbin/apache2 -k start www-data 2833 0.0 3.5 293868 35752 ? S 01:00 0:01 /usr/sbin/apache2 -k start www-data 2834 0.0 3.4 293508 34444 ? S 01:00 0:00 /usr/sbin/apache2 -k start
新增使用者
剛剛有提到更新需要一個使用者,尤其當你有設定 Virtual Host 時需請各版主自行去升級.
以使用者 benjr 為範例.
root@ubuntu:~# useradd benjr root@ubuntu:~# passwd benjr Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
HTML 權限
root@ubuntu:~# touch /var/www/html/.htaccess root@ubuntu:~# mkdir /var/www/html/wp-content/uploads root@ubuntu:~# find /var/www/html/ -exec chown www-data:www-data {} \; root@ubuntu:~# find /var/www/html/ -type d -exec chmod 755 {} \; root@ubuntu:~# find /var/www/html/ -type f -exec chmod 644 {} \; root@ubuntu:~# chgrp www-data /var/www/html/wp-config.php root@ubuntu:~# chmod 440 /var/www/html/wp-config.php root@ubuntu:~# find /var/www/html/wp-content -exec chgrp www-data {} \; root@ubuntu:~# find /var/www/html/wp-content -type d -exec chmod 775 {} \; root@ubuntu:~# find /var/www/html/wp-content -type f -exec chmod 664 {} \;
root@ubuntu:~# ll /var/www/html total 200 drwxr-xr-x 5 www-data www-data 4096 Dec 4 01:59 ./ drwxr-xr-x 3 root root 4096 Oct 30 23:23 ../ -rw-r--r-- 1 www-data www-data 235 Dec 4 18:04 .htaccess -rw-r--r-- 1 www-data www-data 418 Sep 24 2013 index.php -rw-r--r-- 1 www-data www-data 19935 Nov 30 23:55 license.txt -rw-r--r-- 1 www-data www-data 7413 Nov 30 23:55 readme.html -rw-r--r-- 1 www-data www-data 5434 Nov 30 23:55 wp-activate.php drwxr-xr-x 9 www-data www-data 4096 Nov 30 23:55 wp-admin/ -rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php -rw-r--r-- 1 www-data www-data 1627 Aug 29 2016 wp-comments-post.php -r--r----- 1 www-data www-data 2839 Nov 30 23:17 wp-config.php drwxrwxr-x 6 www-data www-data 4096 Dec 4 02:19 wp-content/ -rw-r--r-- 1 www-data www-data 3669 Nov 30 23:55 wp-cron.php drwxr-xr-x 18 www-data www-data 12288 Nov 30 23:55 wp-includes/ -rw-r--r-- 1 www-data www-data 2422 Nov 20 2016 wp-links-opml.php -rw-r--r-- 1 www-data www-data 3306 Nov 30 23:55 wp-load.php -rw-r--r-- 1 www-data www-data 36583 Nov 30 23:55 wp-login.php -rw-r--r-- 1 www-data www-data 8048 Jan 10 2017 wp-mail.php -rw-r--r-- 1 www-data www-data 16246 Nov 30 23:55 wp-settings.php -rw-r--r-- 1 www-data www-data 30071 Nov 30 23:55 wp-signup.php -rw-r--r-- 1 www-data www-data 4620 Nov 30 23:55 wp-trackback.php -rw-r--r-- 1 www-data www-data 3065 Aug 31 2016 xmlrpc.php
Apache2 + SSH2
更新不想要輸入使用者帳號密碼時,可以透過設定 Apache2 + SSH2 的方式,詳細設定請參考 https://benjr.tw/10928
root@ubuntu:~# sudo su - benjr benjr@ubuntu:~$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/benjr/.ssh/id_rsa): Created directory '/home/benjr/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/benjr/.ssh/id_rsa. Your public key has been saved in /home/benjr/.ssh/id_rsa.pub. The key fingerprint is: SHA256:cgVtD1r1PkM524V3sl47112dfdswerSDF34Fw8pEhQpwodiw benjr@ubuntu The key's randomart image is: +---[RSA 4096]----+ | o.++o+ +o| | E ==o..B+.| | . ++.o .Bo+| | .. +o.Bo| | . S . ** o| | o . o.o+.| | o .* | | . . + +| | . o | +----[SHA256]-----+ benjr@ubuntu:~$ cp /home/benjr/.ssh/id* /home/benjr/ benjr@ubuntu:~$ exit logout
root@ubuntu:~# cat /home/benjr/id_rsa.pub >> /home/benjr/.ssh/authorized_keys root@ubuntu:~# chown benjr:benjr /home/benjr/.ssh/authorized_keys root@ubuntu:~# chmod 644 /home/benjr/.ssh/authorized_keys root@ubuntu:~# vim /home/benjr/.ssh/authorized_keys from="127.0.0.1" ssh-rsa
root@ubuntu:~# vi /var/www/html/wp-config.php /** Define Upgrade FTP Usernames and Passwords */ define('FTP_BASE', '/var/www/html'); define('FTP_CONTENT_DIR', '/var/www/html/wp-content/'); define('FTP_PLUGIN_DIR', '/var/www/html/wp-content/plugins/'); define('FTP_PUBKEY','/home/benjr/id_rsa.pub'); define('FTP_PRIKEY','/home/benjr/id_rsa'); define('FTP_USER','benjr'); define('FTP_PASS',''); define('FTP_HOST','127.0.0.1:22'); define('FS_METHOD', 'direct');
沒有解決問題,試試搜尋本站其他內容