Laravel项目已在php.ini启用OpenSSL仍无效 求助排查
解决PHP 8.2中OpenSSL扩展启用后仍显示禁用的问题
问题描述
搭建Laravel项目时,已在php.ini中启用OpenSSL扩展,但执行php -i | grep openssl仍输出:
OpenSSL support => disabled (install ext/openssl) OLDPWD => /home/Merlin/openssl-3.0.8 $_SERVER['OLDPWD']=> /home/Merlin/openssl-3.0.8 $_ENV['OLDPWD'] => /home/Merlin/openssl-3.0.8
同时Laravel的Factory.php第648行报错:
SSL/TLS保护需要openssl扩展,但该扩展不可用。如果无法启用openssl扩展,您可以自行承担风险,将'disable-tls'选项设置为true来禁用此错误。
环境:PHP 8.2、Composer 2.5.8
解决步骤
1. 确认PHP实际加载的php.ini文件
CLI模式下的PHP可能和Web服务(如FPM)使用不同的配置文件,执行命令查看当前生效的配置路径:
php --ini
找到输出中的Loaded Configuration File,确保你修改的是这个路径下的php.ini。
2. 检查php.ini中的OpenSSL配置
打开正确的php.ini文件,找到对应系统的配置行:
- Linux/macOS:
extension=openssl - Windows:
extension=php_openssl.dll
确保该行没有被注释(行首无;),如果是编译安装的PHP,可能需要指定扩展绝对路径,示例:
extension=/usr/lib/php/20220829/openssl.so
(路径需根据你的PHP版本和系统实际情况调整)
3. 验证PHP编译时是否关联OpenSSL
从你提供的OLDPWD路径来看,你可能手动编译过OpenSSL,但PHP编译时未链接该库。重新编译PHP时需指定OpenSSL安装路径:
./configure --prefix=/usr/local/php82 --with-openssl=/home/Merlin/openssl-3.0.8 make && make install
编译完成后再次执行php -i | grep openssl检查状态。
4. 临时应急方案(不推荐)
若暂时无法解决编译或配置问题,可修改Composer配置禁用TLS验证(存在安全风险):
# 全局配置 composer config -g disable-tls true # 仅当前项目生效 composer config disable-tls true
内容的提问来源于stack exchange,提问作者GrvG
相关产品推荐
相关产品推荐

