次の thinkphp フレームワーク チュートリアル コラムでは、ThinkPHP の認証コードが表示されない問題の解決方法を紹介しますので、困っている方の参考になれば幸いです。
![ThinkPHP 検証コードが表示されない問題を解決する](https://img.php.cn/upload/article/202009/05/2020090509155939763.jpg)
今日、非常に奇妙なバグに遭遇しました。つまり、ローカルで正常に実行される PHP プログラムを作成しましたが、それが当事者 A のサーバーに公開されると、バグが発生します。認証コードが表示されないこと。
![1599268686856869.png ThinkPHP 検証コードが表示されない問題を解決する](https://img.php.cn/upload/image/247/960/942/1599268686856869.png)
具体的な症状は、小さなひび割れた画像アイコンが Chrome ブラウザに表示されることです。画像を右クリックして、新しいウィンドウで開きます。まだ小さいです。エラー メッセージではなく、クラックされた画像 (xdebug 拡張機能と PHP エラー報告が有効な場合)。そうであれば、検証コードの URL ルーティングとビジネス ロジック コードには問題はないが、検証コードの生成プロセスに問題があることを意味します。私のデバッグのアイデアは次のとおりです:
1. GD ライブラリが正しくインストールされているかどうかを確認します。Linux では、yum、apt、または pecl を使用してインストールすることをお勧めします。Windows では、phpStudy 統合環境の使用を推奨します。これは共通に統合されています。使用されている拡張子であり、マウスの右ボタンで開くことができます。 (認証コード画像を別ウィンドウで開くと、エラーメッセージが表示され文字化けが多発する場合が該当します。エラーメッセージがある場合は、エラーメッセージに従ってデバッグを行ってください。)
![1599268691631070.png ThinkPHP 検証コードが表示されない問題を解決する](https://img.php.cn/upload/image/891/306/400/1599268691631070.png)
# #2. 検証コードによって呼び出されるフォントが見つからないかどうかを確認します。検証コードコンポーネントによって呼び出される一部のフォントがターゲットコンピュータにインストールされていないため、検証コードモジュールのソースコードを解析する必要があります。私は ThinkPHP の公式 think-captcha を使用しています。そのソース コードは、vendortopthinkthink-captchasrc で見つけることができます。vendortopthinkthink-captchaassets で、この検証コード プラグインには独自のフォントが付属していることがわかります。そのため、ThinkPHP の検証コードは基本的に不要です。フォントの問題、別の検証コード プラグインの場合は、この場所を確認する必要があります。
3. バグのある検証コード イメージとローカル テストの正常な検証コード イメージをダウンロードし、メモ帳を使用して表示して比較します。
![1599268696880533.png ThinkPHP 検証コードが表示されない問題を解決する](https://img.php.cn/upload/image/153/388/635/1599268696880533.png)
#上の画像はローカル環境の検証コードイメージのメモ帳ですが、より専門的な 16 進エディタを使用してファイルの差異を分析します。
![1599268704272273.png ThinkPHP 検証コードが表示されない問題を解決する](https://img.php.cn/upload/image/464/134/172/1599268704272273.png)
図に示すように、不良ファイル bad は、先頭に EF BB BF とその他の数字が追加されている点を除いて、まったく同じ内容であることがわかりました。理由としては、サーバー上に専門的なコードエディタがないため、運用保守担当者が通常の Windows のメモ帳を使用して画像を修正したためではないかと推測しています。 PHP コード。この BOM ヘッダーが追加されます。
3 番目の理由の場合、解決策は 2 つあり、1 つは検証コードの imagepng 出力画像コードを呼び出す前に、ob_clean を使用して php の出力バッファをクリアする方法です。コードの BOM をバッチで削除するためにいくつかのツールを使用することもあります。
![1599268709900052.png ThinkPHP 検証コードが表示されない問題を解決する](https://img.php.cn/upload/image/943/970/841/1599268709900052.png)
ここでは ob_clean を使用し、think-captcha のメイン ファイルである Captcha.php の 203 行目の前に ob_clean() を追加して、完全に解決できるようにします。 。パフォーマンスと安定性に対する厳しい要件がある場合は、BOM をバッチで削除するツールを使用することをお勧めします。そのほうが安全です。同時に、editplus などの専門的なコード エディターをサーバーにいつでもインストールすることをお勧めします。コードを変更するために Windows メモ帳を使用しないでください。
以上がThinkPHP 検証コードが表示されない問題を解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。