您在這裡

這些年玩的WordPress:麻煩篇

jack 在 二, 12/15/2015 - 10:12 發表

通常來說,不管你用的是什麼CMS,WordPress也好,或者是Drupal、Joomla,理論上要安裝架設都不難,但實際上放到公開網路上對外開張時,一定是大小問題不斷的。

特別是在網站運轉有些時日之後,每次從這家代管業者搬到另一家時,往往遇到的狀況又不一樣,每次都會有讓網站難以運轉的問題發生。

本篇把過去遇到做過筆記的問題集結起來,一方面讓自己備忘,一方面也給大家做問題解決的參考。

以下問題多數是發生在VPS代管上的,如果你的代管是屬於Web hosting的,可能自行斟酌情況看是否通用。

檔案無法上傳

在WordPress上貼文章時,原本應該可以直接在編輯器上上傳圖片檔,但卻出現了無法上傳的狀況。

解決方法,修改根目錄下的wp-config.php,增加以下紅字標示的程式碼,另也檢查wp-content下是否有upload檔案夾,若沒有可新增一個權限為755的檔案夾。

require_once(ABSPATH . 'wp-settings.php');

define ( 'UPLOADS' , 'wp-content/upload' );

只有首頁,內容全部404錯誤

修改apache設定,將「AllowOverride None」→「AllowOverride All」,如下

<Directory /var/www/>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

我的是ubuntu作業系統,位置在

/ect/apache2/apache2.conf

完成之後重新啟動apache2

sudo service apache2 restart

「編輯」使用者無法上傳檔案

這個問題與上面問題並不一樣。上面的問題是連管理員都無法上傳,而這個問題是,管理員可以上傳檔案,但是編輯角色的使用者無法上傳。

照理說WordPress的權限設定裡「編輯」使用者的權限應該也能夠上傳多媒體檔案,但這裡確不行。

網搜之後發現到,這個問題的可能原因似乎非常多,網路上也有一堆各式各樣的解決方法。但分析之後可發現,絕大多數都是模組衝突問題,我遇到的狀況也是。

解決方式,先把全部模組都關閉,甚至移除。

如果此時可以上傳檔案,那麼就是模組衝途問題了。問題解決之後,再將需要的模組一個一個安裝回去,每安裝一個就試試看,直到抓到衝突的為止。知道到底是那一個模組出問題之後,就可以自行考慮是否保留該模組,或者找尋替的的模組。

 

網站無法登入,或登入之後管理員權限下許多功能無法存取

此事發生在Drupal,不知WordPress會不會發生同樣狀況。

連上Linux主機之後修改Apache2 mod_rewrite:

sudo a2enmod rewrite

sudo service apache2 restart

讓網站可以寄信

網站架好之後,e-mail功能是一定要有的。最基本的寄信功能可以安裝sendmail。安裝之前可以先升級Linux OS,再輸入以下指令:

sudo apt-get install sendmail

然後修改修改php.ini

/etc/php5/apache2

sendmail_path = /usr/sbin/sendmail

sendmail_from = [email protected]

記得將[email protected]改為自己的email。

另一個解決寄信問題的方法,比較建議使用諸如Postman這樣的模組,也就是利用SMTP協定來寄信。同時建議以OAuth 2.0和gmail(例如)串接,雖然有些麻煩,還得先向Google申請網站金鑰和密鑰,但相較之下此法算是安全又好用。

 

WordPress自訂網址無法作用的問題

WordPress的「固定網址設定」可以讓你設定各種簡潔網址的結構,讓你的網址看起來比較漂亮,而不是系統預設的http://www.example.com/?p=123

安裝完網站之後,乍看之下沒問題,甚至還可以進入主控台做各種設定,但是文章點進去之後發生錯誤,進一步再嘗試發現到,所有的文章點進去都是錯誤頁面。

這時到後台把「固定網址」改設為「一般」之後發現,網站就正常了。

這個問題可嘗試修改以下設定看看。一個不行,三個都改。

一、修改Apache設定:

將「AllowOverride None」→「AllowOverride All」。ubuntu上的檔案位置:/etc/apache2/apache2.conf

<Directory /var/www/>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

二、修改.htacess檔案

加入以下設定

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

三、安裝apache2 rewrite模組

連上Linux主機之後修改Apache2 mod_rewrite:

sudo a2enmod rewrite

sudo service apache2 restart

 

Tags: