fsockopen ssl连接不工作

问题描述:

我想在我的本地服务器上使用ssl端口465上的apache使用php函数fsockopen在smtp服务器上。 它适用于php命令行,但脚本在浏览器中运行时遇到SSL错误。fsockopen ssl连接不工作

任何帮助将通过Apache不胜感激:-)

的php.ini

extension=php_openssl.dll line is not commented 

的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 

我的脚本

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

<?php 
$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/> 

平台

我使用PHP 5.4.11 /阿帕奇2.2.22(Win32的)上Windows 8 64

- 编辑 - 我已经使用TLS尝试的建议:

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

我也得到

E_WARNING: fsockopen(): in XXX on line XXX 

错误信息是空白和$错误号=(INT)0,$ errstr =(字符串)' '

+0

您可能想看看使用像[SwiftMailer(HTTP库证书颁发机构:// swiftmailer。组织/)而不是滚动您自己的SMTP客户端。但是,请尝试使用'tls://'包装器而不是'ssl://'。如果这不起作用,请尝试使用'tcp://'封装器进行连接,并使用'stream_socket_enable_crypto()'手动启用流中的加密。错误消息说有一个超时发生 - 启动脚本后多久你会得到错误信息(即多长时间超时?) – DaveRandom 2013-03-25 10:06:39

+0

我试过这个:'code' fsockopen('tls:// in.mailjet。com',567,$ errno,$ errstr,30); '代码',我得到E_WARNING:fsockopen():在XXX上XXX XXX – 2013-03-25 10:09:29

+0

你得到一个空白的错误信息? – DaveRandom 2013-03-25 10:14:36

我将我的Apache版本从2.2更新到2.4,现在可以使用。

我按照此tutoriel:http://lifeofageekadmin.com/how-install-apache-2-4-php-5-4-and-mysql-5-5-21-on-windows-7/获取新的Apache版本。

我在和其使用验证码的接触形式类似的问题,得到错误的fsockopen():无法连接到SSL://mail.google.com:443

这是一个FreeBSD VM ,与Joomla安装。

搜索,我发现http://php.net/manual/en/function.fsockopen.php其中提到了证书验证。

安装FreeBSD的端口“ca_root_nss”其中包括的根证书的证书验证从包含在Mozilla的NSS库