国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
失敗する理由
ネイティブ認証局を使用する
cacert.pem ファイルをダウンロードして維持します
ホームページ バックエンド開発 PHPチュートリアル Windows で PHP Curl HTTPS 認証局の問題を修正する方法

Windows で PHP Curl HTTPS 認証局の問題を修正する方法

Nov 11, 2024 pm 12:24 PM
php

HTTPS リクエストが成功すると、HTTP クライアントが 既知の信頼できるルートのリストに対するサーバー提供の TLS 証明書 証明書。 PHP Curl 拡張機能も違いはありません。カール 拡張機能は libcurl を使用して HTTPS リクエストを作成し、さらに libcurl は OpenSSL などの TLS ライブラリを使用してリクエストを検証します。

Windows で PHP Curl HTTPS 認証局の問題を修正する方法

Curl 拡張機能には、次の內(nèi)容を含む有効なファイルが必要です。すべての HTTPS 検証を完了するための信頼されたルート証明書、および PHP これを php.ini ファイル內(nèi)のディレクティブとして公開します。

Linux、BSD、および macOS では、libcurl はデフォルトでシステム ルートに設(shè)定できます。 証明書を使用しますが、Windows ではこれを行うことはできません。 すべてのシステム ルートを含む 1 つのファイルが付屬しているわけではありません

この記事では、Curl 拡張機能を使用して HTTPS リクエストを正常に実行するための 2 つの方法と、HTTPS リクエストが安全でないままにしてはいけないことについて説明します。

失敗する理由

$ch?=?curl_init('https://php.watch');??
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);??
curl_exec($ch);?//?false??

curl_error($ch);
//?SSL?certificate?problem:?unable?to?get?local?issuer?certificate

curl_exec 呼び出しが誤った応答で失敗し、curl_error が SSL 証明書の問題を示している場合: ローカル発行者を取得できません証明書エラー。これは、Curl にルート証明書を含むファイルが提供されなかったか、ルート証明書を検出できなかったことを意味します。

このエラーは、Linux、BSD、および macOS システムではまれですが、非常にまれです。 ルートを取得するための指定されたファイルがないため、Windows では一般的です。 証明書が含まれており、PHP にはルート証明書リストが同梱されていません。 own.

解決策は、最新のルートを含むファイルを提供することです 証明書を使用するか、理想的には、Curl にネイティブ ルート ストアを解析させます。

ネイティブ認証局を使用する

Curl 7.71 以降では、Curl を設(shè)定できます。 Curl にネイティブ (システム) ルート証明書を使用するよう要求するオプション。 これは Windows でも機能し、Curl はシステム ルート証明書を解析します。

CURLOPT_SSL_OPTIONS オプションが CURLSSLOPT_NATIVE_CA に設(shè)定されている場合 またはそれらのビットを含むビットマスクの場合、Curl はネイティブのビットマスクを使用しようとします。 ルート証明書ストア。の機能とバージョンに応じて異なります。 基礎(chǔ)となる TLS ライブラリ。

これは、Curl 拡張機能が Curl 7.71 以降および PHP 8.2 以降で構(gòu)築されている場合に推奨される修正です。

?$ch?=?curl_init('https://php.watch');
??curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);
???curl_setopt($ch,?CURLOPT_SSL_OPTIONS,?CURLSSLOPT_NATIVE_CA);
????curl_exec($ch);

上記のスニペットは、 Curl のバージョンと PHP バージョンであり、PHP と Curl の両方のバージョン要件が満たされていることを前提としています。の 以下は、Curl オプションを條件付きで追加する例です。

$ch?=?curl_init('https://php.watch');??
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);??
if?(defined('CURLSSLOPT_NATIVE_CA')??
??&&?version_compare(curl_version()['version'],?'7.71',?'>='))?{??
????curl_setopt($ch,?CURLOPT_SSL_OPTIONS,?CURLSSLOPT_NATIVE_CA);
}??
curl_exec($ch);

cacert.pem ファイルをダウンロードして維持します

8.2 より古いバージョンの PHP で実行されているアプリケーションの場合 (CURLSSLOPT_NATIVE_CA 定數(shù)は使用できません)、または Curl のバージョンが 7.71 より古い場合、 推奨される代替ソリューションは、Curl 互換のファイルをダウンロードすることです。 ルート証明書ファイルを作成し、それを使用するように PHP または Curl リクエストを構(gòu)成します。

Curl プロジェクトは、証明書の最新のリストを管理します。 Mozilla から抽出された CA 証明書を參照してください。

  1. cacert.pem ファイルをダウンロードします

  2. PHP および Web サーバーがアクセスできるディレクトリにファイルを移動します。たとえば、C:/php/cacert.pem.
  3. に php.ini ファイルを編集し、cacert.pem ファイルへの絶対パスを指すようにcurl.cainfo エントリを変更します。

  4. $ch?=?curl_init('https://php.watch');??
    curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);??
    curl_exec($ch);?//?false??
    
    curl_error($ch);
    //?SSL?certificate?problem:?unable?to?get?local?issuer?certificate
  5. 必要に応じて、Web サーバーを再起動します (例:

このアプローチの欠點は、cacert.pem ファイルを定期的に更新する必要があることです。 cacert.pem たとえば、Curl プロジェクトによって提供されるファイルはルートから抽出されます。 Mozilla によって管理されるストア。平均すると、このリストとファイルは次のようになります。 年に4?5回更新されます。最新のルートとの互換性を確保するには 証明書リスト。このファイルのローカル コピーを必ず更新してください。 定期的に

INI ファイルを変更できない場合は、Curl リクエスト內(nèi)で cacert.pem ファイルへの絶対パスも指定します:

?$ch?=?curl_init('https://php.watch');
??curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);
???curl_setopt($ch,?CURLOPT_SSL_OPTIONS,?CURLSSLOPT_NATIVE_CA);
????curl_exec($ch);

PHP 8.2 と Curl 7.77 、CURLOPT_CAINFO_BLOB を使用して cacert.pem の內(nèi)容を含む文字列を取得することができます。オプション。

以上がWindows で PHP Curl HTTPS 認証局の問題を修正する方法の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責(zé)任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛裝具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお勧めします。インデックスは0から始まり、範囲外のアクセスはnull値を返し、値を割り當てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結(jié)果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関數(shù)を均一に使用することをお勧めします。

発電機はPHPでどのように機能しますか? 発電機はPHPでどのように機能しますか? Jul 11, 2025 am 03:12 AM

ageneratorinphpisamemory-efficientwaytoateate-overdeatatasetasetasetasetsinging valueseintimeintimeturningthemallatonce.1.generatorsususedeywordproducevaluesedemand、memoryusage.2を還元すること。2

PHPでのセッションハイジャックを防ぐ方法は? PHPでのセッションハイジャックを防ぐ方法は? Jul 11, 2025 am 03:15 AM

PHPでのセッションハイジャックを防ぐには、次の測定値をとる必要があります。1。httpsを使用して送信を暗號化し、session.cookie_secure = 1をphp.iniに設(shè)定します。 2. HTTPonly、Secure、SamesiteなどのセキュリティCookie屬性を設(shè)定します。 3。ユーザーがログインまたはアクセス許可を変更して変更を変更してセッションIDを変更したときにsession_regenerate_id(true)を呼び出します。 4.セッションのライフサイクルを制限し、GC_MAXLIFETIMEを合理的に構(gòu)成し、ユーザーのアクティビティ時間を記録します。 5。SessionIDをURLに公開することを禁止し、SESSION.USE_ONLYを設(shè)定します

URLENCODEを使用してPHPで文字列をエンコードする方法 URLENCODEを使用してPHPで文字列をエンコードする方法 Jul 11, 2025 am 03:22 AM

urlencode()関數(shù)は、文字列をURLセーフ形式にエンコードするために使用されます。これは、非過去の文字( - 、_、および。を除く)に、2桁の16進數(shù)が続くパーセント記號に置き換えられます。たとえば、スペースは標識に変換され、感嘆符は!に変換され、漢字はUTF-8エンコーディングフォームに変換されます。使用する場合、URL構(gòu)造の損傷を避けるために、URL全體ではなく、パラメーター値のみをエンコードする必要があります。パスセグメントなどのURLの他の部分の場合、rawurlencode()関數(shù)を使用する必要があります。配列パラメーターを処理する場合、http_build_query()を使用して、各値でurlencode()を自動的にエンコードするか、データの安全な転送を確保することができます。ただ

PHP文字列の最初のn文字を取得します PHP文字列の最初のn文字を取得します Jul 11, 2025 am 03:17 AM

substr()またはmb_substr()を使用して、phpで最初のn文字を取得できます。特定の手順は次のとおりです。1。substr($ string、0、n)を使用して、ASCII文字に適しており、シンプルで効率的です。 2。マルチバイト文字(中國語など)、MB_Substr($ String、0、n、 'UTF-8')を処理し、MBSTRING拡張機能が有効になっていることを確認します。 3.文字列にhtmlまたはwhitespace文字が含まれている場合、最初にstrip_tags()を使用してタグとtrim()を削除してスペースをきれいにし、結(jié)果がきれいであることを確認するためにインターセプトする必要があります。

PHP文字列の最後のn文字を取得します PHP文字列の最後のn文字を取得します Jul 11, 2025 am 03:17 AM

PHPで文字列の最後のn文字を取得する2つの主な方法があります。1。substr()関數(shù)を使用して、単一バイト文字に適したネガティブ開始位置を介して傍受します。 2。MB_SUBSTR()関數(shù)を使用して、英語以外の文字が切り捨てられないように多言語とUTF-8エンコーディングをサポートします。 3.オプションで、文字列の長さが境界の狀況を処理するのに十分かどうかを判斷します。 4. Strrev()substr()の組み合わせ方法を使用することはお勧めしません。これは、マルチバイト文字にとって安全で非効率的ではないためです。

PHPでセッション変數(shù)を設(shè)定および取得する方法は? PHPでセッション変數(shù)を設(shè)定および取得する方法は? Jul 12, 2025 am 03:10 AM

PHPでセッション変數(shù)を設(shè)定して取得するには、最初にスクリプトの上部でsession_start()を呼び出してセッションを開始する必要があります。 1.セッション変數(shù)を設(shè)定するときは、$ _Session HyperGlobal Arrayを使用して、$ _Session ['username'] = 'john_doe'などの特定のキーに値を割り當てます。文字列、數(shù)字、配列、さらにはオブジェクトを保存できますが、パフォーマンスに影響を及ぼさないでデータを保存しすぎないようにします。 2。セッション変數(shù)を取得するときは、最初にsession_start()を呼び出してから、echo $ _session ['username']など、キーを介して$ _sessionアレイにアクセスする必要があります。 Isset()を使用して、変數(shù)が存在するかどうかを確認することをお勧めします。

PHPでのSQL注射を防ぐ方法 PHPでのSQL注射を防ぐ方法 Jul 12, 2025 am 03:02 AM

PHPでのSQL注入を防ぐための主要な方法には、次のものが含まれます。1。プリプロセシングステートメント(PDOやMySQLIなど)を使用して、SQLコードとデータを分離します。 2。真の前処理を確保するために、シミュレートされた前処理モードをオフにします。 3。IS_NUMERIC()およびFilter_Var()を使用するなど、ユーザー入力をフィルターおよび検証します。 4. SQL文字列を直接スプライシングしないようにし、代わりにパラメーターバインディングを使用します。 5.生産環(huán)境でエラー表示をオフにし、エラーログを記録します。これらの測定では、メカニズムや詳細からのSQL注入のリスクを包括的に防ぎます。

See all articles