2019年1月5日 星期六

Domjudge users can not login, 500 internal server error

Keyword: Domjudge, Domserver, PHP, Symfony, Proxy, Error

現象1: 安裝完 Domjudge 6.0.3 後,發現 admin 帳號可以登入管理介面, 但由 admin 新建的一般 user 帳號卻無法登入, 而出現 Apache2 server 的 "500 internal error" 訊息。

現象2: 觀察  /var/log/apache2/error.log 後, 會看到以下訊息:
--------------------------------------------------------------------------------------------------------------------------
[Fri Jan 04 17:48:08.602178 2019] [:error] [pid 3784] [client 10.7.21.241:56024] PHP Fatal error:  require(): Failed opening required '/opt/domjudge/domserver/webapp/var/cache/prod/doctrine/orm/Proxies/__CG__DOMJudgeBundleEntityTeam.php' (include_path='/opt/domjudge/domserver/lib/vendor/phpseclib/phpseclib/phpseclib:.:/usr/share/php') in /opt/domjudge/domserver/lib/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php on line 209, referer: http://10.7.21.242/domjudge/login
--------------------------------------------------------------------------------------------------------------------------
此訊息描述了 PHP 的 prod cache 出了問題。

現象3: 以 php symfony proxy error 為關鍵字 google 搜尋後, 可找到網址 https://stackoverflow.com/questions/36255440/symfony-cache-doctrine-orm-proxies-failed-to-open-stream-proxy-abstractproxyfac 的說明, 其意為在執行 application 前的 cache 未事先建立。

解法:
在 /opt/domjudge/domserver/webapp/bin/ 資料夾下, 執行 console 程式如下, 來 warmup prod 的 cache。
-------------------------------------------------------------------------------
sudo /opt/domjudge/domserver/webapp/bin/console cache:warmup --env=prod
-------------------------------------------------------------------------------

執行後, 會出現以下訊息:
-------------------------------------------------------------------------------------------------------
 // Warming up the cache for the prod environment with debug
 // false


 [OK] Cache for the "prod" environment (debug=false) was successfully warmed.
--------------------------------------------------------------------------------------------------------

這樣子就可以讓 users 登入 Domjudge 了。

沒有留言:

張貼留言

網誌存檔