开发者社区 问答 正文

Windows下Apache2.4PHP5.4下 https和openssl共存问题

系统环境Win2008 32 +  Apache2.4+PHP5.4


最近业务影响,需要将apache 添加https服务,但发现添加后,原php的openssl函数不能正常调用,一调用apache服务就会自动重启。


我想主要是因为 Apache\bin下的
ssleay32.dll和libeay32.dll与PHP5 目录里的ssleay32.dll和libeay32.dll不一致引起


但我试过相互交换2个版本,或都使用同1版本都不行


请问各位大牛有什么好的解决办法!



展开
收起
yanonline 2017-12-23 14:19:11 2933 分享 版权
阿里云 AI 助理回答

遇到Apache与PHP的OpenSSL库冲突问题,确实可能是因为ssleay32.dlllibeay32.dll版本不兼容导致的。您已经尝试了相互交换或使用同一版本但未解决问题,这里有几个建议您可以尝试:

  1. 确定兼容版本:首先,确保您使用的Apache和PHP版本与OpenSSL库是兼容的。访问Apache和PHP的官方网站或文档,查找推荐或已知兼容的OpenSSL版本。

  2. 统一库文件来源:尽量从同一个发行包中提取ssleay32.dlllibeay32.dll,以保证它们之间的兼容性。有时候,即使版本号相同,来自不同编译环境的库也可能存在不兼容的问题。

  3. 清理旧库文件:在进行替换之前,确保完全删除原有的ssleay32.dlllibeay32.dll,避免系统因为加载了错误的库而产生冲突。重启服务器后再重新放置正确的库文件。

  4. 配置文件调整

    • 确认您的php.ini文件中是否正确启用了openssl扩展(去掉;extension=openssl前面的分号)。
    • 在Apache的配置文件(如httpd.conf)中,检查是否有与SSL相关的配置错误,比如证书路径、私钥路径等是否正确。
  5. 日志分析:查看Apache的错误日志(通常位于Apache安装目录下的logs/error.log),这可能会提供关于服务重启的具体原因,有助于定位问题。

  6. 使用VC_redist:确保您的系统上安装了正确的Visual C++ Redistributable for Visual Studio版本,因为这些库需要相应的运行时环境才能正常工作。

  7. 降级或升级:如果以上方法都无法解决,考虑将Apache或PHP升级到最新稳定版,或者回退到一个已知两者能良好协同工作的版本组合。

  8. 外部模块方式:考虑通过PHP的外部模块方式安装OpenSSL,而不是依赖于系统或Apache提供的库,这样可以更好地控制版本和兼容性。

每一步操作后,都记得重启Apache服务来使更改生效,并检查是否解决了问题。希望这些建议能帮助您解决问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答