最近因为项目而接触到了Thinkphp,正在上手中。但昨天遇到几个问题,一下子牵连出之前搭建WAPM(windows+apache+PHP+MySQL)遗留的配置问题。
aphache\conf目录下,本着宁少勿滥的原则 大体有这几句需要改的:(但这还不是解决上面这个问题的)
ServerRoot "d:/WAMP/Apache24" <Directory />
AllowOverride All
Require all denied </Directory> DocumentRoot "d:/WAMP/web" <Directory "d:/WAMP/web"> Options Indexes FollowSymLinks AllowOverride All Require all granted
</Directory> <IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule> LoadModule php5_module "D:/WAMP/php/php5apache2_4.dll" AddType application/x-httpd-php .php .html .htm PHPIniDir "D:/WAMP/php"
具体路径 替换掉。
mysql配置:
path:添加环境变量》path: ;D:\WAMP\MySql55\bin 别把原来电脑的覆盖了。
好了,关键的地方就是php的配置了。图中问题所示是没有定义到这个类。首先定位到这个这个语句的地方(由于这是开发者模式,所以它会显示出具体路径)
(我饿了)
if(!empty($config['charset'])){
//为兼容各版本PHP,用两种方式设置编码
$this->options[\PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES '.$config['charset'];
$dsn .= ';charset='.$config['charset'];
}
关键的错误点就是:
\PDO::MYSQL_ATTR_INIT_COMMAND
这是thinkphp的 调用第三方类库的方式,理应在tp这个框架正常执行的话,那么问题就应该出自php中的PDO库中的命令,果然发现是php中对MYSQL支持的模块我并没有我开启。打开php.ini
将
;extension=php_pdo_mysql.dll
取消注释
extension=php_pdo_mysql.dll
修改保存后,手痒运行了一下 php.exe 发现 找不到模块 ...重新查看发现:还有一个路径得修改
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "D:\WAMP\php\ext"
修改以后,问题解决。