Larvel:PHP Artisan迁移引发PDO异常:找不到驱动程序(Postgres)

Larvel:PHP Artisan迁移引发PDO异常:找不到驱动程序(Postgres),php,postgresql,laravel,nginx,pdo,Php,Postgresql,Laravel,Nginx,Pdo,OS:Ubuntu 16.10 服务器:Nginx DB:PostgreSQL 9.5.4 Laravel 5.4 尝试执行我的数据库迁移,但php artisan migrate引发以下错误: [照亮\数据库\查询异常] 找不到驱动程序:(SQL select*from information_schema.tables,其中tables_schema=username,table_name=migrations) 然后是第二条消息,声明 [例外情况] 找不到驱动程序 我已经做了以下工作: 验

OS:Ubuntu 16.10

服务器:Nginx

DB:PostgreSQL 9.5.4

Laravel 5.4

尝试执行我的数据库迁移,但
php artisan migrate
引发以下错误:

[照亮\数据库\查询异常] 找不到驱动程序:(SQL select*from information_schema.tables,其中tables_schema=username,table_name=migrations)

然后是第二条消息,声明

[例外情况]

找不到驱动程序

我已经做了以下工作:

  • 验证是否已安装php pgsql的最新版本
  • 在/etc/php/7.0/fpm/php.ini中取消注释与php_pdo_pgsql.dll相关的行
  • 多次重新启动posgtresql和nginx
  • 目前,当我运行
    php-I
    时,我得到的PDO部分的输出是

    PDO支持=>已启用

    PDO驱动程序=>pgsql

    pdo_pgsql部分产生

    PostgreSQL(libpq)版本=>9.5.4

    模块版本=>7.0.15-0ubuntu0.16.10.4

    pgsql部分返回

    PostgreSQL(libpq)版本=9.5.4

    PostgreSQL(libpq)=>x86_64-pc-linux-gnu上的PostgreSQL 9.5.4,由gcc(Ubuntu 6.1.1-11ubuntu12)6.1.1 20160805编译,64位多字节字符 支持=>已启用

    SSL支持=>已启用

    活动持久链接=>0

    活动链接=>0


    但尽管如此,仍然得到了同样的错误。我认为可能是权限问题,但以root或www data的身份运行该命令会产生相同的结果。

    您需要定义.env文件

    在.env文件中,您需要指定正在使用的数据库(MySQL、SQLite、Postgres),并指定DB用户名和密码

    APP_ENV=local
    APP_KEY=base64:gqaCpjbEfukDr5As7EnrqRzi5PSho1rOS/q2H0E+HOs=
    APP_DEBUG=true
    APP_LOG_LEVEL=debug
    APP_URL=http://localhost
    
    DB_CONNECTION=pgsql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=YOUR_DB_NAME
    DB_USERNAME=YOUR_USERNAME
    DB_PASSWORD=YOUR_PASSWORD
    
    BROADCAST_DRIVER=log
    CACHE_DRIVER=file
    SESSION_DRIVER=file
    QUEUE_DRIVER=sync
    
    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379
    
    MAIL_DRIVER=smtp
    MAIL_HOST=mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=
    MAIL_PASSWORD=
    MAIL_ENCRYPTION=null
    
    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    
    在处理迁移时,运行这些命令总是很好的

    composer dump-autoload
    php artisan cache:clear
    php artisan view:clear
    

    已解决:

    在此场景中,请确保已运行

    php artisan缓存:清除 php artisan配置:缓存


    我认为我已经在每一个关键的步骤都这样做了,但是再次运行这两个命令可以让我进行迁移并使站点正常运行。不过,感谢刘易斯4U的帮助。

    我也经历过同样的情况, 按顺序尝试以下操作:

    1) install the postgre extensions for php, those are:
       php-(YOUR_VERSION)-pgsql, and php-pgsql.
    2) enable pgsql extensions in your php.ini file, basically, 
       uncomment the the extensions. 
    3) restart the apache server(or nginx).
    4) check that extensions are enable using phpinfo() or any else tool.
    5) set a password for (in instance) the postgres user in postgreSQL 
       server, this is a very important step.
    
    登录到psql shell:

    sudo su - postgres
    \password postgres
    
    输入密码并确认


    现在,设置.env文件并重试。

    您应该安装PHP pdo

    sudo apt upgrade 
    sudo apt install php-pgsql
    

    如果你想让我在teamviewer上帮你,你可能犯了一些小错误,但是如果你看不到你是否在使用php fpm,除了重新启动web服务器(nginx/apache)之外,你总是很难判断出什么是错的