OpenWrt中php7-mod-*等PHP扩展无法加载问题求助
OpenWrt 21.02下lighttpd运行PHP缺失openssl扩展问题排查
可能原因
- PHP CLI与lighttpd使用的FastCGI进程加载了不同的配置文件:OpenWrt环境中,PHP CLI和FastCGI(php-fpm)可能各自读取不同的配置目录/文件,你检查的CLI配置可能和lighttpd调用的FastCGI配置不一致。
- 扩展依赖的系统库缺失:
openssl.so依赖系统级的openssl库,若系统未安装完整的libopenssl包或版本不兼容,会导致扩展无法加载。 - 文件/目录权限不足:
openssl.so或其所在的/usr/lib/php7/modules/目录权限设置错误,PHP进程无法读取扩展文件。 - 扩展加载顺序错误:curl、phar等依赖openssl的扩展若先于openssl加载,会导致openssl扩展初始化失败,进而无法被识别。
解决建议
- 核对lighttpd的PHP FastCGI配置:打开
/etc/lighttpd/conf.d/10-php.conf,确认FastCGI启动PHP时的配置参数,比如是否通过-c指定了正确的配置目录(应为/etc/php7/),确保与你检查的ini文件路径一致。 - 验证FastCGI的扩展加载状态:手动启动php-fpm并指定配置目录(
php-fpm7 -c /etc/php7/),查看启动日志是否有扩展加载报错;或创建一个包含<?php phpinfo(); ?>的文件,通过浏览器访问,查看已加载扩展列表确认openssl是否存在。 - 检查扩展依赖库:执行
ldd /usr/lib/php7/modules/openssl.so,查看输出中是否有not found的依赖项,若有则安装对应的系统包(如opkg install libopenssl)。 - 修复文件权限:执行以下命令修正权限:
chmod 755 /usr/lib/php7/modules/openssl.so chmod 755 /usr/lib/php7/modules/ chown root:root /usr/lib/php7/modules/openssl.so - 调整扩展加载顺序:确保
/etc/php7/下的15_openssl.ini文件名前缀数字(15)小于依赖它的扩展配置文件(如20_curl.ini的20),保证openssl先加载。 - 重启服务生效:修改配置后执行以下命令重启相关服务:
/etc/init.d/php-fpm7 restart /etc/init.d/lighttpd restart
内容的提问来源于stack exchange,提问作者Juzzsmee
相关产品推荐
相关产品推荐

