加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – OpenSSL已启用但无法正常工作

发布时间:2020-12-13 17:02:14 所属栏目:PHP教程 来源:网络整理
导读:我正在运行Apache 2.2.13和 PHP 5.2.12.只需手动安装 PHP 5.2.12(即可访问所有扩展)并启用OpenSSL. phpinfo()表示OpenSSL已启用并运行OpenSSL 0.9.8k 2009年3月25日. 我收到此错误:PHP致命错误:调用未定义的函数ftp_ssl_connect(). 我已经看到PHP手册建议
我正在运行Apache 2.2.13和 PHP 5.2.12.只需手动安装 PHP 5.2.12(即可访问所有扩展)并启用OpenSSL. phpinfo()表示OpenSSL已启用并运行OpenSSL 0.9.8k 2009年3月25日.

我收到此错误:PHP致命错误:调用未定义的函数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(即使它只使用虚拟机) – 但您可能仍需要重新编译PHP以获得它(默认情况下可能未启用)>只是没有使用该功能;毕竟,您知道您的托管服务是否会为您提供服务吗? (如果您无法在生产服务器上使用它,则无需在开发/测试机器上使用)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读