由於公司租用的是虛擬空間,而且用的是IIS服務器,所以部署PHP的時候就出現很多問題:比如昨天就碰到這個問題:在IIS下部署Thinkphp項目,驗證碼不能顯示
這是生成驗證碼的方法:
// 制作專門方法實現驗證碼生成 function verifyImg() { // 以下類Verify在之前並沒有include引入 // 走自動加載Think.class.php autoload() $config = array ( 'useNoise' => false, 'imageH' => 35, // 驗證碼圖片高度 'imageW' => 100, 'fontSize' => 14, 'fontttf' => '4.ttf', // 驗證碼字體,不設置隨機獲取 'length' => 4 ) // 驗證碼位數 ; $verify = new \Think\Verify ( $config ); $verify->entry (); }
然后再apache下可以,但是在IIS下就是不行,看網上說的最多的是去掉BOM頭就可以了,但是我用UE保存為不帶BOM頭的還是不行
今天終於解決了:
在生成驗證碼之前:加上ob_clean
// 制作專門方法實現驗證碼生成 function verifyImg() { // 以下類Verify在之前並沒有include引入 // 走自動加載Think.class.php autoload() $config = array ( 'useNoise' => false, 'imageH' => 35, // 驗證碼圖片高度 'imageW' => 100, 'fontSize' => 14, 'fontttf' => '4.ttf', // 驗證碼字體,不設置隨機獲取 'length' => 4 ) // 驗證碼位數 ; ob_clean(); $verify = new \Think\Verify ( $config ); $verify->entry (); }
就OK了,當然這些是在開啟GD庫的前提下