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

Devilbox运行Laravel连接PostgreSQL报could not find driver错误

问题原因
  • 自定义PHP配置的使用方式错误:Devilbox中cfg/php-ini-X.X/目录下的自定义配置文件,仅支持修改已安装扩展的运行参数、PHP内存限制、上传大小这类基础配置,无法直接启用未安装的扩展。你在自定义ini中写入的extension=pdo_pgsql、extension=pgsql配置,因为容器内没有对应扩展的二进制文件,完全不会生效,PHP进程加载不到pgsql驱动,就会抛出could not find driver错误。
  • 命令执行位置错误:如果你直接在宿主机终端执行php artisan相关命令,调用的是宿主机本地的PHP环境,即便容器内安装了对应扩展,宿主机PHP没有安装pgsql驱动也会报相同错误。
解决步骤
    1. 配置PHP容器自动安装pgsql扩展
      先停掉当前运行的所有相关容器:
    docker-compose down
    
    打开Devilbox根目录下的.env配置文件,找到PHP_MODULES_CONFIGURED配置项,将pgsql、pdo_pgsql添加到该配置的扩展列表中。Devilbox会在容器启动时自动编译安装该列表内声明的所有PHP扩展,无需手动写ini配置加载。
    你之前在cfg/php-ini-8.1/下创建的自定义ini文件中,手动添加的extension加载配置可以删除,避免扩展安装完成后出现重复加载的警告。
    1. 重建容器让配置生效
      执行如下命令强制重建PHP镜像,确保扩展正确安装:
    docker-compose up -d httpd bind php pgsql --build --force-recreate
    
    1. 验证扩展加载状态
      启动完成后,执行命令进入PHP容器内部:
    docker-compose exec php bash
    
    在容器内执行命令检查扩展是否正常加载:
    php -m | grep pgsql
    
    命令正常返回pdo_pgsql、pgsql两行结果,即代表扩展安装成功。
    1. 执行迁移命令
      在容器内进入项目根目录(默认挂载路径为/shared/httpd/你的项目目录名/htdocs),先清除旧的配置缓存:
    php artisan config:clear
    php artisan cache:clear
    
    再执行迁移安装命令即可正常运行:
    php artisan migrate:install
    

*提示:如果不想每次执行artisan命令都进入容器,可以在宿主机配置命令别名,将php、composer命令映射到容器内的对应执行入口,即可直接在宿主机项目目录调用相关命令。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:06:42