ThinkPHP3.2的升级知道可以看官方文档:
http://www.kancloud.cn/manual/thinkphp/1889
下面说说一些比较容易犯错的地方:
一、ThinkPHP3.2里面用F方法储存的数据都被序列化了。假设你用F方法把数据储存到配置文件,储存后的数据都是序列化之后的,这样你就不能像3.1那样用C方法读取配置文件的数据了。我们可以自己定义一个储存数据的方法解决之。在/Application/Common/Common创建function.php,然后添加以下代码:
01 |
|
02 |
/** |
03 |
* [writeArr 写入配置文件方法] |
04 |
* @param [type] $arr [要写入的数据] |
05 |
* @param [type] $filename [文件路径] |
06 |
* @return [type] [description] |
07 |
*/ |
08 |
function writeArr( $arr , $filename ) { |
09 |
return file_put_contents ( $filename , " |
10 |
} |
然后可以用这个writeArr方法来写入配置
调用方法:
1 |
// 写入配置文件 |
2 |
public function setConfig(){ |
3 |
$file = CONF_PATH. '/setConfig.php' ; |
4 |
if (writeArr( $_POST , $file )){ |
5 |
$this ->success( '修改成功' ); |
6 |
} else { |
7 |
$this ->error( '修改失败' ); |
8 |
} |
9 |
} |
二、ThinkPHP3.2加载外部标签库出现“实例化一个不存在的类”错误
例如:
'APP_AUTOLOAD_PATH' => '@.TagLib',
'TAGLIB_BUILD_IN' => 'Cx,Hd',
改成,并放在对应模块的config.php里面,不要放在公共配置的config.php里面
'TAGLIB_BUILD_IN' => 'Cx,Home\TagLib\TagLibHd',
'TAGLIB_PRE_LOAD' => 'Home\TagLib\TagLibHd',
三、ThinkPHP3.2下import导入自定义类的问题
首先检查下命名空间有没有出错,然后还要做以下改动:
在import('Class.Image',APP_PATH)之后,实例化时,应该这样:
$Image = new \Image();
而不是
$Image = new Image();
因为这样的话会直接作为一个当前命名空间下的类使用,所以会报找不到类的错。
四、自定义标签库错误,parseXmlAttr()错误
3.2版本已经作废了该方法,所以要获取属性值,直接就可以通过$attr(属性数组) 变量来获得,
也就是释掉以下即可正常加载标签:
//$attr = $this->parseXmlAttr($attr);
//$attr($attr);
五、3.2版本M方法调用失败(3.1版本正常调用)
这个时候可以试下把MySQL的连接地址重 localhost 改成 127.0.0.1 即可正常调用M方法。
localhost will cause the MySQL client to try a UNIX socket in a standard directory. If that doesn't exist or is somewhere else, you won't be able to connect. 127.0.0.1 always uses a TCP connection.
参考网址:
http://iwww.me/258.html
http://www.thinkphp.cn/topic/23917.html
http://stackoverflow.com/questions/20723803/pdoexception-sqlstatehy000-2002-no-such-file-or-directory
http://blog.liunianer.com/post-25.html
http://www.thinkphp.cn/topic/13186.html