今天在作驗證碼功能的時候,發現,thinkphp視圖中引入驗證碼圖片,卻顯示一個破碎照片的小圖標,能明顯,圖片引入失敗。php
就是這個樣子:html
因而我在網上搜索怎麼解決,網上答案主要分爲如下幾種:linux
1.php沒有安裝gd庫,thinkphp
2.或者gd庫沒有開啓。windows
3.有BOM頭存在,須要用ob_clean()函數清理。函數
我用phpinfo()打開網頁,工具
我又打開個人php.ini設置,把php_gd2.dll前面的分號去掉(取消註釋),url
但是仍是沒法顯示圖片。調試
後來我查到,php_gd2.dll是windows環境中gd庫使用時須要開啓的擴展,而我使用的是linux,在php.ini裏須要開php_gd.so。cdn
但我在個人php.ini裏沒有找到php_gd.so這個文件。
後來我決定從新編譯安裝一下gd庫,由於這樣能生成所謂的php_gd.so,
你們若是想嘗試,能夠試試,會費些時間。
雖然沒有解決個人問題,但仍是感謝這個博主的教程->:linux下編譯安裝gd庫教程。
雖然有了php_gd.so這個文件,也在php.ini裏添加這這個擴展,可是仍是沒法顯示圖片。
從早搞到晚,實在有點崩潰。
後來,我發現,打開谷歌調試工具,圖片地址沒有報錯,說明路徑是合法的。
而當我複製圖片連接,從新打開圖片時,顯示的倒是thinkphp首頁,根本沒有定向到個人驗證碼方法。
因此我以爲時個人src地址有問題,我在視圖中使用的時tp3自帶的{:U('')}方法,
但我以爲這個方法自己因該沒有問題,因而我嘗試在上面的圖片連接中去掉admin模塊前的index.php,
再去訪問圖片連接,
終於,驗證碼這個控制器下的方法管用了,驗證碼顯示了。
在這個index.php後面不管加什麼控制器方法,都會定向到tp首頁。
但是,tp3的U方法爲何會在url裏添加一個index.php呢?
後來我發現,與thinkphp的url模式有關,thinkphp默認是pathinfo模式,
而U方法會在pathinfo模式下,自動添加index.php,生成一個路由。
而若是改爲rewrite模式,就不會添加index.php。就能訪問一個正常的方法連接。