在Ubuntu下使用php artisan migrate命令时,相信许多人会碰到这样的问题:
[PDOException] could not find driver
错误提示咧,说是找不到驱动。为什么找不到驱动呢?就是你安装php时,没有顺道一块儿装上pdo_mysql的php扩展模块。
当然问题原因找到了,解决起来就很简单了吧?然而并不简单,很多人直接上网搜解决办法估计会被误导,因为使用者安装php的方式不同,那么添加pdo_mysql模块的方式也不同,很多新手就是被网上诸多你抄我,我抄你的垃圾信息给误导了,然后耗费了大量时间也没有搞定这个问题。
实际上要解决这个问题,得看你当初是采用哪一种方法安装php的:
- 采用命令行方式安装php,即apt-get的的方式
这种情况下解决起来是最简单的,去网上一搜估计98%的答案都是用来解决这种情况的吧。
在命令行输入如下命令即可:
apt-get install php5-mysql
- 采用独立安装包的方式安装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
中。
注:下文提到的文件路径,请根据自己的具体安装路径,自行修改。
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.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文件,操作步骤如上。