2

ローカルサーバーのポート465でApacheを使用してSSLを使用してSMTPサーバーでphp関数fsockopenを使用しようとしています。phpコマンドラインでうまく機能しますが、スクリプトをブラウザで実行するとSSLエラーが発生します。

php.ini

extension=php_openssl.dll line is not commented

Apacheを介したphpinfo

Loaded Configuration File : D:\localhost\php-5.4.11\php.ini
openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.8x 10 May 2012
OpenSSL Header Version  OpenSSL 0.9.8x 10 May 2012

コマンドラインを使用したphpinfo

Loaded Configuration File => D:\localhost\php-5.4.11\php.ini
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 0.9.8x 10 May 2012
OpenSSL Header Version => OpenSSL 0.9.8x 10 May 2012

私のスクリプト

$smtp = fsockopen('ssl://in.mailjet.com', 465, $errno, $errstr, 30);
$response = fgets($smtp, 4096);
if(empty($smtp)){
   echo $response;
   return false;
}
echo $response . '<br/>';
fclose($smtp);

apacheの下での出力

Warning: fsockopen(): SSL: crypto enabling timeout in XXX on line 2
Warning: fsockopen(): Failed to enable crypto in XXX on line 2
Warning: fsockopen(): unable to connect to ssl://in.mailjet.com:465 (Unknown error) in XXX on line 2

コマンドラインで出力

220 srv12.mailjet.com ESMTP Mailjet
<br/>

プラットフォーム:Windows864でPHP5.4.11/ Apache 2.2.22(Win32)を使用しています

-編集-提案されているようにTLSを使用してみました:

$smtp = fsockopen('tls://in.mailjet.com', 567, $errno, $errstr, 30);

そして、私は得る

E_WARNING: fsockopen(): in XXX on line XXX

エラーメッセージが空白で$errno = (int) 0$errstr = (string) ''

4

2 に答える 2

0

Apacheのバージョンを2.2から2.4に更新しましたが、動作するようになりました。

私はこのチュートリアルに従ってきました:http : //lifeofageekadmin.com/how-install-apache-2-4-php-5-4-and-mysql-5-5-21-on-windows-7/新しいApacheバージョン。

于 2013-04-17T07:37:20.247 に答える
0

キャプチャを使用するお問い合わせフォームでも同様の問題が発生し、エラーが発生しました

fsockopen(): unable to connect to ssl://mail.google.com:443

これは、JoomlaがインストールされたFreeBSDvm上にあります。

検索して、証明書の検証について言及しているhttp://php.net/manual/en/function.fsockopen.phpを見つけました。

ca_root_nssMozillaNSSライブラリに含まれている認証局からのルート証明書の証明書検証を含むFreeBSDポートをインストールしました。

于 2016-02-16T01:01:18.930 に答える