RedHat 8.8服务器上PHP添加Oracle数据库驱动失败,脚本提示找不到驱动求助
RedHat 8.8服务器上PHP添加Oracle数据库驱动失败,脚本提示找不到驱动求助
兄弟,我之前在RHEL8.8上踩过一模一样的坑,给你梳理几个必查的点,大概率能解决你的问题:
先把Oracle客户端的库路径配置到位,不然PHP加载扩展时会找不到依赖的Oracle库:
- 先确认你安装的Oracle Instant Client的库目录,19版本的话一般是
/usr/lib/oracle/19.19/client64/lib - 手动创建系统库配置文件:
sudo echo "/usr/lib/oracle/19.19/client64/lib" > /etc/ld.so.conf.d/oracle-instantclient.conf - 刷新系统库缓存,让配置生效:
sudo ldconfig
这一步是很多人容易忽略的,没配置的话即使装了客户端,系统也找不到对应的库文件
- 先确认你安装的Oracle Instant Client的库目录,19版本的话一般是
检查PHP的Oracle扩展是否真的安装到系统里了:
你在php.ini里加了extension=pdo_oci和extension=oci8_19的配置,但如果系统里根本没有oci8.so、pdo_oci.so这两个文件,那肯定会提示找不到驱动。先执行下面的命令搜一下:find /usr/lib64/php/modules -name "oci8*.so" find /usr/lib64/php/modules -name "pdo_oci.so"如果没有搜索结果,说明你只装了Oracle客户端,没装PHP对应的扩展包,这里给你两个解决办法:
- 用Remi仓库安装(推荐,无需手动编译):
- 先安装Remi仓库的release包,获取适配RHEL8的remi-release-8.rpm文件后,执行
sudo dnf install remi-release-8.rpm完成仓库配置 - 启用你当前使用的PHP版本对应的Remi仓库,比如你用的是PHP8.2,就运行:
sudo dnf module enable php:remi-8.2 - 最后安装扩展:
sudo dnf install php-oci8 php-pdo-oci
- 先安装Remi仓库的release包,获取适配RHEL8的remi-release-8.rpm文件后,执行
- 手动编译安装(适合无法使用外部仓库的场景):
- 先安装编译依赖:
sudo yum install php-devel gcc make oracle-instantclient-devel - 用pecl安装oci8扩展:
pecl install oci8,安装过程中会提示输入Oracle Instant Client的路径,直接输入instantclient,/usr/lib/oracle/19.19/client64/lib即可 - 对于pdo_oci扩展,需要下载对应PHP版本的源码包,进入源码目录下的
ext/pdo_oci文件夹,依次执行:phpize && ./configure --with-pdo-oci=instantclient,/usr/lib/oracle/19.19/client64/lib,19.19 && make && make install
- 先安装编译依赖:
- 用Remi仓库安装(推荐,无需手动编译):
确认你修改的是正确的php.ini文件,并且重启了PHP服务:
- 执行
php --ini命令,查看输出里的Loaded Configuration File项,确保你修改的是这个路径下的php.ini,别改了个没用的配置文件 - 配置修改完成后,必须重启PHP相关服务才能生效:
- 如果用的是PHP-FPM模式:
sudo systemctl restart php-fpm - 如果用的是Apache的mod_php:
sudo systemctl restart httpd
我当初就是改完配置忘了重启服务,白白折腾了半小时
- 如果用的是PHP-FPM模式:
- 执行
最后可以看错误日志找精准线索:
如果还是不行,去查看PHP的错误日志,FPM模式下一般是/var/log/php-fpm/error.log,Apache模式下是/var/log/httpd/error_log,日志里会明确告诉你加载扩展失败的具体原因,比如依赖缺失、权限不足之类的,比脚本里那句模糊的“找不到驱动”有用多了
内容来源于stack exchange
相关产品推荐
相关产品推荐

