gpt4 book ai didi

php - OpenSSL 启用但不工作

转载 作者:可可西里 更新时间:2023-10-31 23:12:18 26 4
gpt4 key购买 nike

我正在运行 Apache 2.2.13 和 PHP 5.2.12。刚刚手动安装了 PHP 5.2.12(以访问所有扩展)并启用了 OpenSSL。 phpinfo() 表示 OpenSSL 已启用并运行 OpenSSL 0.9.8k 2009 年 3 月 25 日。

我收到此错误:PHP fatal error :调用未定义的函数 ftp_ssl_connect()。

我看到 PHP 手册在哪里建议“ftp_ssl_connect() 仅在 ftp 模块和 OpenSSL 支持静态内置到 php 中时才可用”,并进一步指出“您必须编译自己的 PHP 二进制文件”才能实现使用 Windows。

我怀疑 phpinfo() 仅将 OpenSSL 指示为“已启用”,因为我取消了对“extension=php_openssl.dll”行的注释,并且在正确的文件夹中具有正确的 dll,在环境变量中具有正确的路径。也许无论 phpinfo() 指示什么,都必须完成对 PHP 的静态构建。

我相信分发的目标(如上所述)是为了动态扩展,但重新编译(对于 OpenSSL)是为了编码静态扩展。

ftp 扩展工作正常(内置于 PHP 5.2 中)。我使用以下代码对此进行测试:

$conn_id = ftp_connect($url);$login_result = ftp_login($conn_id, $username, $password);ftp_close($conn_id);

请注意,要检查 ssl,我只将 ftp_connect 更改为 ftp_ssl_connect。当到达这一行时,我在我的 Apache 错误日志文件中收到上面的 PHP 错误。

最佳答案

作为documentation states (引用您已经引用的内容):

Note: Why this function may not exist
ftp_ssl_connect() is only available if both the ftp module and the OpenSSL support is built statically into php, this means that on Windows this function will be undefined in the official PHP builds.
To make this function available on Windows you must compile your own PHP binaries.

您说您“手动”安装了 PHP;但这可能仍然意味着您使用了来自 php.net 的“官方”构建——这意味着您还没有编译自己的 PHP 二进制文件……因此,该功能不可用。


没有什么神奇的:看来你必须重新编译 PHP,在编译时使用正确的配置选项,如果你想能够使用那个函数......

这里有一些相关的文档:Build your own PHP on Windows -- 但是......祝你好运......我从来没有听说过在 Windows 上编译 PHP 是“简单的”,实际上 (在 Linux 上并不难,但 Linux 可能更适合当它来编译)


其他几个解决方案:

  • 为您的开发切换到 Linux (即使它只使用虚拟机)——但您可能仍然需要重新编译 PHP 才能获得它(默认情况下可能未启用)
  • 只是不使用那个功能;毕竟,您知道您的托管服务是否会为您提供吗? (如果你不能在你的生产服务器上使用它,就不需要在你的开发/测试机器上使用)

关于php - OpenSSL 启用但不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com