特定のインスタンスにオプションを設定できることを理解していますが、実際に必要なのは、すべてのプロジェクトとすべてのインスタンスでこれを処理するphp.iniなどを設定することです。
誰かが私がこれを達成する方法を知っていますか?
編集:私は証明書が異なるサーバーの異なる場所にあることを可能にするソリューションに特に興味があります。
私はこれを必要とするWindowsマシンで開発していますが、それを必要としないだけでなく、パスも示されていないLinuxサーバーに展開しています。
条件を使用してコードがどこで実行されているかを確認できることを理解していますが、そのまま使用することを望んでいます。これは実際にはcurlの問題であり、コードではなくPHPが処理する必要があるため、その設定がそこに属しているようです。
私はここ(ユーザーノート)で答えを見つけました: http://php.net/manual/en/function.curl-setopt.php
これを.iniに追加するだけです(注:ini_set
、理由はわかりませんが。ありがとう@Carlton):
curl.cainfo=c:\php\cacert.pem
そして、そのファイルを以下から取得します: http://curl.haxx.se/docs/caextract.html
機能し、あなたはMITM攻撃に開放されていません
これは、ビルド時に有効なcrtデータが見つかったときにLinuxで表示できるものを「エミュレート」するパッチです(ほとんどすべてのディストリビューションに当てはまります)。
http://www.php.net/~pierre/patches/curl_cacert_default.txt
(システム)ini設定を追加して、cacertへのパスを定義します。curl.cainfo= c:\ curl\ca.crt
cacertデータはここで取得できます: http://curl.haxx.se/docs/caextract.html
Php 5.3のDLLはここにあります: http://www.php.net/~pierre/test/curl-5.3-vc9-x86-ts-nts-cainfodefault.Zip DLL php 5.2はここにあります: http://www.php.net/~pierre/test/curl-5.2-cainfodefault.Zip
仕組みを教えてください。
[curl] curl.cainfo="C:/xampp/php/cacert.pem"
@Mattは正しいですが、curl.cainfoはPHP_INI_SYSTEMディレクティブであるため、php.ini ...で設定する必要があります。スクリプトでini_set関数を使用すると、何分もヘッドバンギングをした後にわかったので、常にfalseを返します。