新下载的php3.23,本地访问数据库可以,服务器上不行。如下:
:(
Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
错误位置
FILE: /usr/local/apache/htdocs/chesudiwx/ThinkPHP/Library/Think/Db/Driver/Mysql.class.php LINE: 36
ThinkPHP3.2.3 { Fast & Simple OOP PHP Framework } -- [ WE CAN DO IT JUST THINK ]
解决办法:
开启pdo_mysql 可以解决。
windows平台:extension=php_pdo_mysql.dll;
Linux平台:extension=pdo_mysql.so;
如果还不行,请用phpinfo 确认pdo_mysql是否安装好,如果没有找到pdo_mysql,需要安装pdo_mysql
先看本地PHPinfo:
pdo_mysql
PDO Driver for MySQL | enabled |
---|---|
Client API version | mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $ |
然后服务器并没有pdo_mysql。但是这个是什么鬼东西?
PHP Data Objects(PDO)扩展为 PHP 访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个具体数据库的 PDO 驱动来访问数据库服务。
OK,看了是必须要安装了。
1、wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
2、tar zxvf PDO_MYSQL-1.0.2.tgz
3、配置和编译文件
cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql
make
make install
/usr/local/php5.5.30/lib/php.ini 添加 extension=pdo.so extension=pdo_mysql.so
然后重起web服务,如
service httpd restart
service nginxd restart
OK