1. 程式人生 > >thinkphp5驗證碼功能踩坑記

thinkphp5驗證碼功能踩坑記

無意中發現直接在訪問網站根目錄可以輸出驗證碼

本網站能正常執行官方demo的驗證碼,


這個網站和上個網站使用的是一套程式碼進行開發的,但是這個網站驗證碼死活不出來。當時以為nginx的配置有問題,然後上網狂找資料,對了後臺報的錯誤資訊為:[error] 26309#0: *8415 recv() failed (104: Connection reset by peer) while reading response header。上網一搜,看到很多文章講這個的,可是並沒有解決我的問題,原文如下:

3、Nginx 502 Bad Gateway錯誤
在php.ini和php-fpm.conf中分別有這樣兩個配置項:max_execution_time和request_terminate_timeout。
這兩項都是用來配置一個PHP指令碼的最大執行時間的。當超過這個時間時,PHP-FPM不只會終止指令碼的執行,
還會終止執行指令碼的Worker程序。所以Nginx會發現與自己通訊的連線斷掉了,就會返回給客戶端502錯誤。
1)Nginx錯誤訪問日誌:
2013/09/19 01:09:00 [error] 27600#0: *78887 recv() failed (104: Connection reset by peer) while reading response header from upstream,client: 192.168.1.101, server: test.com, request: "POST /index.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:",  host: "test.com", referrer: "http://test.com/index.php"
2)PHP-FPM報錯日誌:
     WARNING:  child 25708 exited on signal 15 (SIGTERM) after 21008.883410 seconds from start
     所以只需將這兩項的值調大一些就可以讓PHP指令碼不會因為執行時間長而被終止了。request_terminate_timeout

     可以覆蓋max_execution_time,所以如果不想改全域性的php.ini,那隻改PHP-FPM的配置就可以了。此外要注意的是Nginx的upstream模組中的max_fail和fail_timeout兩項。有時Nginx與上游伺服器(如Tomcat、FastCGI)的通訊只是偶然斷掉了,但max_fail如果設定的比較小的話,那麼在接下來的fail_timeout時間內,Nginx都會認為上游伺服器掛掉了,都會返回502錯誤。所以可以將max_fail調大一些,將fail_timeout調小一些。

因為前天重新安裝過PHP,所以懷疑PHP安裝的有問題,然後編譯又有依賴問題,結果忙活了老半天。安裝好後,這回確認是PHP沒問題的了,而且確定將gd的庫也安裝和各種圖片處理庫給安裝上了。結果還是不行,最後在瀏覽器位址列中的一個大字錯誤讓我發現了上述有趣的現象,在此記錄,已和各位初學者共勉,也可防止將來再犯此錯,哈哈。


    // URL偽靜態字尾

    'url_html_suffix'        => '',

經過一天的奮戰,終於發現原來是這不應該加字尾的問題,但是我的www.tplearn.com的網站是加了字尾也可以訪問的,這個是檢視tp的助手函式原始碼時恍然想到的。不禁想到,有些時候,出了,問題,在網上搜尋資料超過一個兩個小時還沒有解決的話,直接去看原始碼,不要再去浪費時間去搜那些胡說八道的文章了。