星期六, 9月 09, 2017

wordpress 出現 Invalid post type 錯誤

今天進 wordpress ,選 All posts 後,就出現 Invalid post type. 的錯誤。先試著開啟 wordpress wp-admin/edit.php 看,發現一開始的檢查 $typenow 就導致錯誤 了,$typenow 是空的。
根據程式碼,試著在網址列加上 ?post_type=post ,能進入 All posts 了,但文章列表是空的。
  1. 上網找了一些文章,說是要移除 plugin ,但我試著移除了,沒有用。
  2. 對照目前的程式碼跟網路下載的 wordpress 4.8 程式碼,也幾乎是一樣的。
  3. 試著直接連線到資料庫看,資料表格一切正常,權限也都是正確的。
  4. 直接在 wp-config.php 裡加入
    define('WP_DEBUG', true);
    define('WP_DEBUG_DISPLAY', false);
    define('WP_DEBUG_LOG', true);
    
    ,然後看 wp-content/debug.log ,終於找到一點蛛絲馬跡。
看來是因為 wp-include/vars.php 有問題,裏面用 preg_match 檢查 _SERVER['PHP_SELF'] 時,因為 match 不到而出錯,猜想這可能連到影響到後續的 $typenow 有問題。根據這個線索去推敲,PHP 應該沒問題,察看了 php-fpm 的設定,也沒問題。後來找到這篇:php - Wrong SCRIPT_FILENAME in Apache 2.4.26 - Stack Overflow,再循線看到這篇:php - Wrong SCRIPT_FILENAME in Apache 2.4.26 - Stack Overflow才知道可能是 Apache 問題,察看了 pacman 的 log,果然前幾天有更新,但是因為沒有重新啟動,所以都沒發現問題。在設定裡補上
ProxyFCGIBackendType GENERIC
以後,重新啟動 Apache 就沒問題了。

沒有留言: