昨天将thinkPHP3.2.3开发的一个系统部署到阿里云的Linux系统。本以为lnmp环境全部OK了,但是却遇到了thinkphp的问题,could not find driver,Library\Think\Db\Driver.class.php LINE: 109。百度了一下,都反映是没有安装mysql_pdo扩展的问题。
现在想起来以前安装lnmp环境是按照阿里云的lnmp搭建教程来做的,可能是在编译安装php的时候没有with mysql_pdo。
官网下载的php.tar.gz一般都自带了很多常用的扩展了,在解压后的/usr/local/src/php.5.6/ext/ 目录下找到mysql_pdo目录
在目录中执行phpize
/usr/local/php/bin/phpize./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysqlmakemake install
正确结果:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
然后修改php.ini文件,增加extension=pdo_mysql.so
最后需要注意的是在修改php.ini了以后,如果用的是nginx服务器则还需要重启php-fpm。
有些文档说要修改extension_dir,拷贝pdo_mysql.so文件,其实在phpinfo()看到默认的扩展路径就是 /usr/local/php/lib/php/extensions/no-debug-zts-20100525/了,所以我认为可以省略这两个操作。
突然想看看php在with安装的那些扩展到底在什么目录,为什么不在/usr/local/php/lib/php/extensions/no-debug-zts-20100525/这个目录。查看/usr/local/php目录,发现with安装的扩展都在include/php/ext目录,而且都是.h文件。这个和phpize增加的.so文件是不同的。算是解决了疑惑。