ローカルサーバーのポート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) ''