私はこれを使用してURLの可用性を確認しています:
$fp = fsockopen($url, 443, $errno, $errstr);
そして、私はこのエラーを取り戻します...
警告:fsockopen()[function.fsockopen]:接続できません https://example.com/soapserver.php:44 (ソケットが見つかりませんtransport "https"-PHPの設定時に有効にするのを忘れましたか?)C:\ Homeなどで...
私はIIS server btw、(私はそうではありません!)お願いします?
私はphpinfo()を実行しましたが、sslがありますが、IMAPとcURLではそれだけです。
何か案は?
sslの場合も、ホストの先頭にssl://を付ける必要があります
行のコメントを外します:extension=php_openssl.dll
in php.ini
Fsockopen呼び出しのURLではなく、ホスト名のみを使用する必要があります。実際のHTTPヘッダーのHost/portを差し引いたuriを提供する必要があります。 @Martijinが指摘したように、またマニュアルページにリストされているように、トランスポートレイヤーセキュリティを使用する場合は、SSLの場合はssl://を、ホスト名の前に付ける必要があります。
マニュアルページ fsockopenの場合。例1を見てください。
HTTPSを強制するNY Timesを取得したいとしましょう。
間違った:
$client = stream_socket_client('https://www.nytimes.com', $errno, $errstr, 30);
正しい:
$client = stream_socket_client('tcp://www.nytimes.com:443', $errno, $errstr, 30);
注_https://
_を_tcp://
_に置き換え、ホスト名に443ポートを追加しました。
stream_socket_client()
はURLを話さないと言えると思います。
ssl://
への切り替えはうまくいきましたが、引き続きBAD REQUEST応答を受け取りました。 here のようにホストヘッダーを明示的に宣言し、HTTPをHTTP/1.0
からHTTP/1.1
に更新したことを確認するには、もう1行追加する必要があることがわかりました。
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.Paypal.com\r\n";
PHPのcurlがインストールされているかどうかを確認します。インストールされていない場合は、カールをインストールします。 Windowsの場合:php.iniのextension = php_openssl.dllの行のコメントを外します。ubuntuの場合はsudo apt-get install php-curl