您好,登錄后才能下訂單哦!
小編給大家分享一下php版本低不顯示驗(yàn)證碼的解決方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
php版本低不顯示驗(yàn)證碼的解決辦法:1、安裝php5-gd所需的依賴;2、創(chuàng)建一個(gè)clean.php文件在項(xiàng)目根目錄下;3、清除bom即可。
本文操作環(huán)境:windows7系統(tǒng)、PHP5版,DELL G3電腦
php版本低不顯示驗(yàn)證碼怎么辦?
PHP5驗(yàn)證碼無(wú)法顯示,GD庫(kù)正常安裝也無(wú)法顯示的解決方法
自己是做JAVA的,同時(shí)也維護(hù)了一個(gè)直接接手的PHP項(xiàng)目,對(duì)PHP是零基礎(chǔ),做了項(xiàng)目的服務(wù)器遷移,域名加了https,最后檢查能正常訪問(wèn),細(xì)的功能沒(méi)有完全測(cè)試。
突然有一天被投訴注冊(cè)模塊的驗(yàn)證碼沒(méi)辦法正常顯示(暫時(shí)去掉之后進(jìn)入后臺(tái)管理模塊發(fā)現(xiàn)圖片上傳功能也不正常,估計(jì)都是一個(gè)問(wèn)題)。于是就開(kāi)始網(wǎng)上長(zhǎng)達(dá)4天間斷性尋找解決辦法的路程。
其實(shí)一般性情況的解決很容易就能找到,一些關(guān)鍵詞就是php-gd、php-fpm(本人配置的是nginx)、php.ini、緩存清除。但是debian系統(tǒng),依賴負(fù)責(zé)到無(wú)法想象,并且每個(gè)版本的依賴名還不一樣,而當(dāng)前系統(tǒng)本身又是生產(chǎn)環(huán)境服務(wù)器,又存在了各種版本的依賴,總之就是頭大。
最終在嘗試了無(wú)數(shù)個(gè)依賴源,依賴的更新之后還是成功裝上了php5-gd所需的依賴。終于phpinfo中也顯示除了GD版本信息及支持的圖片格式,然而,驗(yàn)證碼依然無(wú)法顯示。。。。。。
在嘗試無(wú)數(shù)搜索關(guān)鍵詞之后,"php5裝了gd也不顯示驗(yàn)證碼"終于搜索到了一個(gè)帖子,里面提到了BOM頭,這一點(diǎn)就明白過(guò)來(lái),因?yàn)樵谟胏rt遠(yuǎn)程登錄服務(wù)器編輯一些文件的時(shí)候也會(huì)有這個(gè)BOM頭的情況,于是創(chuàng)建一個(gè)clean.php文件在項(xiàng)目根目錄下,
粘貼如下代碼
<?php /*清除bom*/ if(isset($_GET['dir'])){ $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if($dh = opendir($basedir)){ while(($file = readdir($dh)) !== false){ if($file != '.' && $file != '..'){ if(!is_dir($basedir."/".$file)){ echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>"; }else{ $dirname = $basedir."/".$file; checkdir($dirname); } } }//end while closedir($dh); }//end if($dh }//end function function checkBOM($filename){ global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191){ if($auto == 1){ $rest = substr($contents, 3); rewrite ($filename, $rest); return "<font color=red>BOM found, automatically removed.</font>"; }else{ return ("<font color=red>BOM found.</font>"); } } else return ("BOM Not Found."); }//end function function rewrite($filename, $data){ $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>
直接瀏覽器訪問(wèn)https://url/clean.php
有問(wèn)題就會(huì)看到很多這樣的日志,接著重新訪問(wèn)驗(yàn)證碼頁(yè)面
正常訪問(wèn)~
上傳圖片的問(wèn)題其實(shí)是因?yàn)橛蛎牧薶ttps而上傳模塊的配置沒(méi)改影響到的,加了https也正常了
以上是“php版本低不顯示驗(yàn)證碼的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。