新下載的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
