You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PDO与OCI8扩展时遇"could not find driver"错误求助

问题解答

关于PHP 8.1的PDO_OCI扩展

PHP 8.1需要单独安装PDO_OCI扩展,它既不包含在PHP核心中,也和你已安装的OCI8扩展相互独立:

  • OCI8是基于Oracle原生OCI API的扩展,提供直接的Oracle数据库操作接口
  • PDO_OCI是PDO(PHP数据对象)规范的Oracle驱动,专门用于支持PDO接口的数据库连接

你当前OCI8可用但PDO连接失败,核心原因就是缺少PDO_OCI驱动。

在Ddev容器中安装并启用PDO_OCI

由于Debian/Ubuntu官方apt源没有预编译的PDO_OCI包,需要手动编译安装,步骤如下:

  1. 进入Ddev容器
ddev ssh
  1. 安装编译依赖
apt update && apt install -y php8.1-dev build-essential libaio-dev
  1. 下载对应版本的PHP源码(以PHP 8.1.29为例,替换为你实际的PHP 8.1子版本)
cd /tmp
wget https://www.php.net/distributions/php-8.1.29.tar.gz
tar xzf php-8.1.29.tar.gz
cd php-8.1.29/ext/pdo_oci
  1. 编译配置(注意替换19.18为你的Oracle Instant Client版本号,比如19c对应19.x,21c对应21.x)
phpize
./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient,19.18
  1. 编译并安装扩展
make && make install
  1. 启用扩展(同时配置CLI和FPM环境)
echo "extension=pdo_oci.so" > /etc/php/8.1/cli/conf.d/20-pdo_oci.ini
cp /etc/php/8.1/cli/conf.d/20-pdo_oci.ini /etc/php/8.1/fpm/conf.d/
  1. 重启PHP-FPM服务
service php8.1-fpm restart
  1. 验证安装成功
php -m | grep pdo_oci

如果输出pdo_oci,说明扩展已启用。

持久化配置(避免容器重建后丢失)

Ddev容器重启或重建后,上述修改会被重置,建议将编译步骤写入Ddev的启动钩子:
在.ddev/config.yaml中添加以下内容:

hooks:
  post-start:
    - exec: |
        apt update && apt install -y php8.1-dev build-essential libaio-dev
        if ! php -m | grep -q pdo_oci; then
          cd /tmp
          wget -q https://www.php.net/distributions/php-8.1.29.tar.gz
          tar xzf php-8.1.29.tar.gz
          cd php-8.1.29/ext/pdo_oci
          phpize
          ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient,19.18
          make && make install
          echo "extension=pdo_oci.so" > /etc/php/8.1/cli/conf.d/20-pdo_oci.ini
          cp /etc/php/8.1/cli/conf.d/20-pdo_oci.ini /etc/php/8.1/fpm/conf.d/
          service php8.1-fpm restart
        fi

内容的提问来源于stack exchange,提问作者JonMcL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:43:23