PHP 7.3.30 openssl扩展无法启用导致openssl_encrypt()函数未定义问题求助
openssl_encrypt()未定义的问题 我来帮你一步步排查这个问题,结合你已经做的操作,咱们从几个容易忽略的点入手:
1. 确认依赖DLL的放置位置
你已经把libeay32.dll和ssleay32.dll放到了PHP目录,但WAMP环境下,Apache进程加载PHP时,可能会从自身的bin目录读取依赖文件。建议你把这两个DLL同时复制到wamp64\bin\apache\apache[你的版本号]\bin目录下。另外要注意:必须下载64位的DLL文件,和你的WAMP64环境匹配,32位DLL会导致加载失败。
2. 检查PHP.ini的扩展路径配置
打开你加载的C:\wamp64\bin\php\php7.3.30\php.ini,找到extension_dir配置项,确保它指向正确的扩展目录:
extension_dir = "ext" # 或者用绝对路径更稳妥: extension_dir = "C:\wamp64\bin\php\php7.3.30\ext"
如果这个路径错误,PHP根本找不到php_openssl.dll文件,即使你开启了extension=php_openssl.dll也没用。
3. 务必重启WAMP所有服务
修改配置和添加DLL后,一定要在WAMP管理器中先停止所有服务,再重新启动。很多时候大家会忽略这一步,导致新的配置和文件没有被加载生效。
4. 检查PHP扩展文件是否存在
去C:\wamp64\bin\php\php7.3.30\ext目录下,确认php_openssl.dll是否存在。如果缺失,说明你的PHP安装包不完整,需要重新下载线程安全(TS)版本的PHP 7.3.30 64位,把缺失的扩展文件补上(WAMP使用的是线程安全版PHP)。
5. 查看PHP错误日志定位具体问题
打开php.ini,找到error_log配置项,查看日志文件路径,比如:
error_log = "C:\wamp64\logs\php_error.log"
打开这个日志文件,搜索关于openssl的错误信息,比如“Failed loading php_openssl.dll”之类的,日志会告诉你具体失败原因(比如依赖缺失、版本不兼容),能帮你更快定位问题。
6. 添加PHP目录到系统PATH环境变量
把C:\wamp64\bin\php\php7.3.30添加到系统的PATH环境变量中,这样系统在加载PHP依赖的DLL时能找到对应的文件。添加后重启电脑(或者至少重启WAMP服务),确保环境变量生效。
完成每一步后,你可以再次执行print_r(get_loaded_extensions())或者刷新phpinfo页面,检查openssl是否出现在加载的扩展列表中。如果还是不行,把错误日志里的具体信息贴出来,我再帮你进一步分析。
内容的提问来源于stack exchange,提问作者SandyK

