伺服器500錯誤時,在移機時很容易發生,通常的原因是檔案路徑(path)跑掉的關係,
但是,有些伺服器商、主機商、虛擬主機商提供的空間並沒有開啟錯誤訊息,於是,連上網業之後只看的到伺服器500錯誤,連log都沒得看,該怎麼辦呢?
還是有對應的方法的,下面這幾種技巧可以幫助除錯,抓到程式的問題出在哪裡。
首先,PHP中有這個函數可以用。
ini_set
string ini_set ( string $varname , string $newvalue )
ini_set — Sets the value of a configuration option
http://tw2.php.net/manual/zh/function.ini-set.php
這可以強制開啟錯誤訊息,所以,只要在開頭加一段PHP原始碼,就可以看到錯誤訊息了。
ini_set('display_errors', 1);
另外,最好檢查以下這些地方,這幾個地方可能會出問題:
- ※ .htaccess 裡面可能會有一些路徑
- ※ 資料庫,有些套件會把網址、路徑記錄在資料庫裡,所以要檢查資料庫
- ※ 所有的php檔,只要有讀取檔案的部分,就要去注意。
我遇到比較多的都是在.htaccess裡面
還有很典型的就是Allowrewrite忘了開On
不過我記得500錯誤,如果是.htaccess的問題,就算開display error 好像也不會顯示東西吧@@?
通常這個時候我會把.htaccess先拿掉,看是否正常,先去除掉一個因素
還有之前愈過安裝mod_security時,也有問題
移機的方式建議先不要把所需要的mod一次裝上,從最乾淨的Apache(安全性也最低)開始測試
慢慢加上你需要的mod,可能比較可以快速找到問題所在
移機很討厭,所以我已經寫好一套sop 把自己比較容一忘記的先寫下來
很建議每個人寫一套自己從零安裝到好的sop,比較不容易忽略掉一些細節