您在這裡

特定長 node 無法 update

Seiken's 的頭像
Seiken 在 2016-06-06 (週一) 11:47 發表

  我的網站目前有個 node 無法 update,每次更新都會出現 500 Internal Server Error。文章有六十多 kb,而 PHP 的 memory_limit 有 128mb,所以推測不是記憶體問題。目前有如下症狀:

  1. 編輯這個 node 時,有最多內容的那個 textfield 的 CKeditor 無法顯示出來,會變成一個普通的 textfield;底下還是有 Switch to plain text editor 按鈕但沒作用。
  2. 刪掉該 textfield 中的一半內容之後再按 Switch to plain text editor,CKeditor 會恢復正常,並且可以成功 update。
  3. 刪掉一半內容然後把剩下的那一半複製貼上讓它變回和原來一樣長,CKeditor 仍維持正常,但送出仍會 500 Internal Server Error(不讓我更新這麼長就是了)。
  4. 直接複製出問題的原文新增一個 node,500 Internal Server Error。
  5. 以 plain text 狀態送出,500 Internal Server Error。
  6. 此狀況在另一個伺服器的測試網站(Drupal 7.41)不發生,但在正式運轉的網站(7.43)發生。除了伺服器設定可能的差異之外,兩個網站的不同幾乎只有 Drupal 版本(在更新前這兩個網站是檔案映射過去的)。
  7. Recent log messages 不會留下任何關於此事件的紀錄。

  目前看來最可能的問題是 Drupal 在送出的時候因為某些原因沒有成功處理內容?但我上次更新這個 node (沒出問題)的時候並不是在現在這個伺服器,好像也不能排除是某些伺服器設定。請問有哪些可能的解決方向?

  這問題我在另一個看似不相干的狀況中意外解決了。這次的新狀況是我用 image field 上傳某個檔案時總是發生 ajax 500 internal server error,經過搜尋和一連串測試之後發現是我用 FastCGI 的問題:我不知道 FastCGI 要吃不同的設定參數,以為改 PHP 參數就好了,而且 FastCGI 上傳的上限預設只有 130 kb。現在我在相關的設定檔裡面加進:

<IfModule mod_fcgid.c>
 MaxRequestLen 10000000
</IfModule>

  然後上傳圖片的問題解決了;我在這串發問的問題忽然也解決了。

  我不太懂 FastCGI 和 mod_php 的具體架構,不過真的是有一些奇妙的現象,像是 SQLite 的檔案在 mod_php 下需要 664 權限才能運作,但 FastCGI 只要 644 就能夠動了。以前都用虛擬空間所以沒注意過這種環節。