53

我无法在 PHP 中启用套接字传输“ssl”。当我运行我的脚本时,我得到了错误:

警告:fsockopen() [function.fsockopen]:无法连接到 ssl://www.my.site.com:443(无法找到套接字传输“ssl” - 您在配置 PHP 时是否忘记启用它? )

我在 Windows 上运行 IIS6,这是我到目前为止所做的尝试让它工作:

  • 取消注释 php.ini 中的 php_openssl.dll 和 php_sockets.dll 扩展
  • 确保 PHP 正在加载我对其进行更改的 ini 文件(确实如此,而且它肯定正在加载其他扩展,所以我相当确定这不是问题)
  • 确保 php_openssl.dll 和 php_sockets.dll 位于正确的位置
  • 将 ssleay32.dll 和 libeay32.dll 复制到 PHP 主文件夹、WINDOWS 文件夹和 WINDOWS/system32 文件夹
  • 确保 Windows 路径变量包含 PHP 的位置
  • 确保所有相关文件的文件权限正确。

几乎每次更改后我都重新启动了 IIS,但我没有任何运气。有什么明显的我做错了吗?有没有办法在较小的部分解决这个问题?(所以我可以通过排除的过程找出问题......?)

不幸的是,Windows/IIS 不是我的专业领域——我被任命为负责人,因为似乎没有其他人知道任何事情。

4

7 回答 7

68

我在 Windows 7 中遇到问题,在命令行中使用 PHP 5.4.0,使用 Xampp 1.8.1 服务器。这就是我所做的:

  1. 重命名php.ini-productionphp.ini(在 C:\xampp\php\ 文件夹中)
  2. 编辑php.ini和取消注释extension_dir=ext
  3. 也取消注释extension=php_openssl.dll

之后它工作得很好。

于 2012-11-18T16:08:15.067 回答
21

成功!

检查日志文件并确保 php_openssl.dll 上的权限正确后,我搜索了警告并找到了更多可以尝试的方法。

所以我:

  • 将 C:\PHP\ext 添加到 Windows 路径
  • 将 libeay32.dll 和 ssleay32.dll 添加到 C:\WINDOWS\system32\inetsrv
  • 重新启动服务器

我不确定其中哪些解决了我的问题,但现在肯定已经解决了!:)

我在这个页面上找到了这些东西可以尝试:http: //php.net/manual/en/install.windows.extensions.php

谢谢你的帮助!

于 2009-11-11T02:31:57.637 回答
7

在 XAMPP 版本 1.7.4 中,服务器在 php ini 文件中没有 extension=php_openssl.dll 行。我们必须在 php.ini 文件中添加 extension=php_openssl.dll

于 2013-01-07T07:19:29.003 回答
7

在尝试使用 SSL 加密发送电子邮件的 Laravel 4 上遇到了同样的问题。

在 Windows 7 64bit 上安装 WAMPServer 2.2 我只在 php.ini 中启用了 php_openssl,重新启动了 WAMPServer 并完美运行。

做了以下:

  • 单击 WampServer -> PHP -> PHP 扩展 -> php_openssl
  • 重启 WampServer
于 2013-05-15T17:09:03.750 回答
7

只需取消注释extension=php_openssl.dll 重新启动 Apache 服务,这应该会有所帮助。

于 2014-01-01T15:37:16.050 回答
1

我刚才在弄乱laravel时也遇到了这个问题。

我在 Windows 上使用 wampserver,必须将 /bin/apache/apacheversion/bin/php.ini 文件复制到 /bin/php/phpversion/php.ini

于 2012-11-28T09:14:53.403 回答
0

我正在使用 XAMPP 并遇到了同样的错误。我已经完成了所有这些步骤,添加了环境变量路径,将 dll 的每个可能的目录复制到 /php、/apache/bin、/system32、/syswow64 等。但仍然出现此错误。

然后在检查 apache 错误日志后,我注意到在路径中使用括号的问题。

PHP:语法错误,第 707 行的 C:\Program Files (other)\xampp\php\php.ini 中的意外 '(' 0 服务器证书不包含与服务器名称匹配的 ID

如果您已将服务器安装在“Program Files (x86)”目录中,由于未转义的括号,可能会出现相同的错误。

要解决此问题,请打开 php.ini 文件并找到包含“include_path”的行并用双引号将路径括起来以修复此错误。

include_path="C:\Program Files (其他)\xampp\php\PEAR"

于 2019-01-12T09:26:09.507 回答