标签:
今天开始学习网站制作,为了练习编程基本功和面向对象程序设计能力。
要做的是一个众筹网站,网上找到了一份参考代码,准备对着重新做一遍,不用框架。那么第一步就是搭建环境,让参考代码跑起来了。
参考代码使用CI框架开发,数据库是MySQL。在windows环境下我使用WAMP软件很方便地安装了Apache+PHP+MySQL。
然后开始将源码中的SQL文件导入到我的数据库里,但是出现了乱码现象,百度一下发现是字符集问题。字符集设置指定了字符的编码方式,中文数据一般以utf8方式编码与MYSQL的默认字符集latin1不同,所以会出现乱码。在MySQL通过这些变量来设置字符集:
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_开头的同上面对应的变量,用来描述字符序。
使用字符集的过程为客户端使用character_set_client,客户端向服务端发数据时将字符集转换成character_set_connection,在服务端内部处理数据时又将字符集转成character_set_server对返回的结果使用character_set_results。上面还提到了字符序的概念,指的是字符间的比较规则,一个字符集可以有几种比较规则,若不特别指定,MySQL将使用这个字符集的默认比较规则。具体可以参照这篇文章http://www.cnblogs.com/discuss/articles/1862248.html写的很棒。
数据库导入之后网站可以跑了,但点击连接后就显示Apache的404页面了。应该是参考代码的运行环境对Apache做了配置,隐藏了CI的入口文件index.php,而在我的环境中没有做配置,所以链接都失效了。于是百度CI应藏入口文件的方法。一番曲折之后解决了问题,大致步骤是开启Apache的Rewrite模块,然后配置Rewrite规则
RewriteEngineOn
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule^(.*)$ /index.php/$1 [L]
让服务器把找不到的地址(动态请求)都发送给index.php,而找的到的(图片,html等静态文件)则不改写。这样就可以在URL中省去index.php了。具体看这篇文章http://www.jb51.net/article/50833.htm。另外我在网上还找到了另一个Rewrite规则
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
但多次试验都不成功,由于对正则表达式不熟也找不出原因只好作罢。配好Apache之后参考代码终于可以顺畅的运行了,那么明天可以开始做网站了。
忙了一天才配好了环境,但其中还是有很多不明白,比如Apche,PHP,MySQL中各个配置项的作用,Rewrite的原理,如何不借助WAMP直接从源码安装这些软件等等,有时间要慢慢学习。
标签:
原文地址:http://www.cnblogs.com/mcjblog/p/4944020.html