最近因为项目而接触到了Thinkphp,正在上手中。但昨天遇到几个问题,一下子牵连出之前搭建WAPM(windows+apache+PHP+MySQL)遗留的配置问题。
aphache\conf目录下,本着宁少勿滥的原则 大体有这几句需要改的:(但这还不是解决上面这个问题的)
ServerRoot <span style="color: #ff0000;">"d:/WAMP/Apache24"</span> <directory style="color: #ff0000;">/> <span style="color: #000000;"> AllowOverride All Require all denied </span>/Directory> <span style="color: #000000;"> DocumentRoot </span><span style="color: #ff0000;">"d:/WAMP/web"</span> <directory style="color: #ff0000;">"d:/WAMP/web"><span style="color: #000000;"> Options Indexes FollowSymLinks AllowOverride All Require all granted </span>/Directory> <ifmodule dir_module><span style="color: #000000;"> DirectoryIndex index.php index.html </span>/IfModule> <span style="color: #000000;"> LoadModule php5_module </span><span style="color: #ff0000;">"D:/WAMP/php/php5apache2_4.dll"</span><span style="color: #000000;"> AddType application</span><span style="color: #ff0000;">/</span>x-httpd-php .php .html .htm <span style="color: #000000;"> PHPIniDir </span><span style="color: #ff0000;">"D:/WAMP/php"</span></ifmodule></directory></directory>
具体路径 替换掉。
mysql配置:
path:添加环境变量》path: ;D:\WAMP\MySql55\bin 别把原来电脑的覆盖了。
好了,关键的地方就是php的配置了。图中问题所示是没有定义到这个类。首先定位到这个这个语句的地方(由于这是开发者模式,所以它会显示出具体路径)
(我饿了)
<span style="color: #0000ff;">if</span>(!<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">$config</span>['charset'<span style="color: #000000;">])){ </span><span style="color: #008000;">//</span><span style="color: #008000;">为兼容各版本PHP,用两种方式设置编码</span> <span style="color: #800080;">$this</span>->options[\PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES '.<span style="color: #800080;">$config</span>['charset'<span style="color: #000000;">]; </span><span style="color: #800080;">$dsn</span> .= ';charset='.<span style="color: #800080;">$config</span>['charset'<span style="color: #000000;">]; }</span>
关键的错误点就是:
<span style="background-color: #ffff00;">\PDO::MYSQL_ATTR_INIT_COMMAND<span style="background-color: #000000;"><br></span></span>
这是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.<span style="color: #000000;"> ; http</span>:<span style="color: #008000;">//</span><span style="color: #008000;">php.net/extension-dir</span> ; extension_dir = "./"<span style="color: #000000;"> ; On windows</span>:<span style="color: #000000;"> extension_dir </span>= "D:\WAMP\php\ext"
修改以后,问题解决。