我正在运行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错误。
答案 0 :(得分:4)
作为documentation states (引用您已引用的内容):
注意:为什么此功能可能不存在
ftp_ssl_connect()
只是 如果ftp模块和 OpenSSL支持已构建 静态地进入php,这意味着 在Windows上这个功能将是 官方PHP版本中未定义。
使此功能可用 在Windows上,你必须编译自己的 PHP二进制文件。
你说你“手动”安装了PHP;但这可能仍然意味着你使用了php.net的“官方”版本 - 这意味着你没有编译自己的PHP二进制文件......所以,这个函数不可用。
没有魔法:如果你想能够使用该功能,你似乎必须在编译时使用正确的配置选项重新编译PHP ...
这里有一些关于它的文档:Build your own PHP on Windows - 但是......祝你好运...我从来没有听说过在Windows上编译PHP是“简单的”,实际上(它并不难在Linux上,但Linux在编译时可能更适合
其他几个解决方案: