溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php版本低不顯示驗(yàn)證碼的解決方法

發(fā)布時(shí)間:2021-09-03 09:33:59 來(lái)源:億速云 閱讀:91 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下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

php版本低不顯示驗(yàn)證碼的解決方法

有問(wèn)題就會(huì)看到很多這樣的日志,接著重新訪問(wèn)驗(yàn)證碼頁(yè)面

php版本低不顯示驗(yàn)證碼的解決方法

正常訪問(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è)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

php
AI