php artisan migrate [PDOException] could not find drive

在Ubuntu下使用php artisan migrate命令时,相信许多人会碰到这样的问题:

[PDOException] could not find driver

错误提示咧,说是找不到驱动。为什么找不到驱动呢?就是你安装php时,没有顺道一块儿装上pdo_mysql的php扩展模块。

当然问题原因找到了,解决起来就很简单了吧?然而并不简单,很多人直接上网搜解决办法估计会被误导,因为使用者安装php的方式不同,那么添加pdo_mysql模块的方式也不同,很多新手就是被网上诸多你抄我,我抄你的垃圾信息给误导了,然后耗费了大量时间也没有搞定这个问题。

实际上要解决这个问题,得看你当初是采用哪一种方法安装php的:

  1. 采用命令行方式安装php,即apt-get的的方式

这种情况下解决起来是最简单的,去网上一搜估计98%的答案都是用来解决这种情况的吧。

在命令行输入如下命令即可:

apt-get install php5-mysql
  1. 采用独立安装包的方式安装php

要是用这种方法安装php,估计网上的答案就比较坑了,找了半天全都是第一种情况的解决方案,然而敲了命令却并没有什么用。我也是被网上充斥的垃圾信息坑苦了,后来去官网细细的看文档才找到了解决办法。

下面是具体的解决办法!!!!!

首先说一下,php扩展都在解压后的php安装包的ext目录下。例如,我用的php安装包解压之后,文件夹是php-5.6.24,那么模块pdo_mysql的安装文件就在/php-5.6.24 /ext/pdo_mysql/下,如下图所示。

我的php已经被安装在路径/usr/local/php中,php.ini文件在/usr/local/lib中。
php artisan migrate [PDOException] could not find drive
php artisan migrate [PDOException] could not find drive
:下文提到的文件路径,请根据自己的具体安装路径,自行修改。

SOLUTION 1

进入扩展文件夹运行如下命令:

cd /php-5.6.24/ext/pdo_mysql/
/usr/local/php/bin/phpize
./configure  --with-php-config=/usr/local/bin/php-config
make
make install

安装成功之后,在php-config文件的extension_dir项标识的文件夹,也就是/usr/local/lib/php/extensions/no-debug-non-zts-20131226下,会看到编译好的模块文件,即pdo_mysql.so。
php artisan migrate [PDOException] could not find drive

这个时候修改php.ini文件,在加载模块的地方加上一行

extension=pdo_mysql.so

或者直接写绝对路径

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so

即可。

SOLUTION 2

重新编译php安装包。

cd /php-5.6.24
./configure  --with-pdo-mysql
make
make install

注意./configure后面的配置选项!!!!!

运行成功之后,查找是否生成”.so”文件并修改php.ini文件,操作步骤如上。