検証コードが表示されない低いバージョンの php の解決策: 1. php5-gd に必要な依存関係をインストールします; 2. プロジェクトのルート ディレクトリに clean.php ファイルを作成します; 3. BOM。
この記事の動作環境: Windows7 システム、PHP5 バージョン、DELL G3 コンピューター
検証コードはありませんPHPのバージョンが低いと表示されるのですがどうすればいいですか?
PHP5の検証コードが表示されない、GDライブラリが正常にインストールされても表示できない問題の解決方法
私はJAVAで作業しており、直接引き継ぎも維持しています PHPの基礎知識ゼロでPHPプロジェクトに取り組んでいます プロジェクトのサーバーを移行し、ドメイン名にhttpsを追加して、最終的に正常にアクセスできることを確認しましたただし、詳細な機能は完全にテストされていません。
ある日突然、登録モジュールの認証コードが正常に表示されないというクレームが入りました(一旦削除した後、バックグラウンド管理モジュールに入ってみると、画像アップロード機能が無いことが分かりました)正常に動作しています。おそらく問題があります)。そこで、断続的に 4 日間オンラインで解決策を探し始めました。
実際、一般的な状況に対する解決策は簡単に見つかります。キーワードとしては、php-gd、php-fpm (nginx を構成しています)、php.ini、キャッシュのクリアなどがあります。しかし、debian システムには想像を絶する依存関係があり、バージョンごとに依存関係の名前が異なり、現在のシステム自体が本番環境のサーバーであり、依存関係のバージョンもさまざまで、要するに、非常に頭の痛い問題です。
無数の依存関係ソースを試し、依存関係を更新した後、最終的に、php5-gd に必要な依存関係を正常にインストールできました。最後に、phpinfo では GD のバージョン情報とサポートされている画像形式も表示されましたが、検証コードはまだ表示できませんでした。 。 。 。 。 。
「php5 で gd をインストールしても認証コードが表示されない」という検索キーワードを数え切れないほど試した結果、BOM ヘッダーについて言及している投稿を見つけました。これは、crt を使用してリモートでログインしていたため、明らかになりました。この BOM ヘッダーは、一部のファイルを編集するときにも表示されるため、プロジェクトのルート ディレクトリに clean.php ファイルを作成し、
次のコードを貼り付けます
<?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); } ?>
ブラウザ /url/clean.php
問題がある場合は、そのようなログが多数表示され、確認コード ページ
## に再度アクセスしてください。
#通常のアクセス~写真のアップロードの問題は、実際にはドメイン名が https に変更されているにもかかわらず、アップロード モジュールの設定が変更されていないことが原因です。https を追加することも正常です 推奨される学習: 「PHP ビデオ チュートリアル >>
以上がPHPのバージョンが低い場合に認証コードが表示されない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。