本教程主要为php的面试及入门考虑,内容比较简单,高手勿喷。第一篇我们先来学习一下Wamp环境的安装,Wamp 即是windows + apache + mysql + php的缩写,本文介绍最新版本的安装。其实在windows开发环境中有套装的集成环境wamp可以直接使用,但是对于我们学习一门语言,也要学会它的环境,因此配置安装也是很重要的。对于production release,我们最重要的是学会Lamp环境,即是Linux环境下的安装。下一篇教程我们将会介绍。因为这个对于一个phper是必须的。好了,言归正传,让我们开始学习吧~
安装 WAMP 环境
1 apache 安装
1.1 目录
我们先从官网上下载http://www.apachehaus.com/cgi-bin/download.plx?dli=hpXRzMVVBFjTEN2aSd0Y0okVOpkVFVVcNdEbuJVQ
apache Haus这个是新的名字,其实就是apache2.4
下载完成后解压到你需要的目录即可。
bin :apache的二进制可执行文件,用来操作apache。其中主要执行文件httpd.exe
conf :配置文件目录,主配置文件httpd.conf,另外extra目录中的httpd-vhosts.conf可以配置虚拟主机
htdocs: apache默认的根目录
include: apache包含的C库
logs:记录apache的日志包括安装日志,访问日志,错误日志等
modules:apache的模块
1.2 注册服务
非安装版的apache我们需要手动来注册httpd服务。
用以下命令安装一个名字为MyServiceName的httpd服务,-n名字,默认服务名称为apache2.4
httpd.exe -k install -n "MyServiceName"
移除httpd服务可以用:
httpd.exe -k uninstall
启动httpd服务
httpd.exe -k start -n "MyServiceName"
停止httpd服务
httpd.exe -k stop -n "MyServiceName"
在windows注册服务成功后,我们可以在服务列表中看到:
同样,我们可以这样启动服务
停止服务
1.3 添加主机域名
由于没有DNS,我们在测试环境需要手动添加需要的主机名,修改文件C:\Windows\System32\drivers\etc\hosts
127.0.0.1 localhost zf2-tutorial.localhost
这样我们就添加了localhost 和 zf2-tutorial.localhost两个域名,同时会映射到我们的本地地址,加空格可以再添加多个。
添加完后我们来测试一下,看到这个页面说明你apache已经安装成功。
1.4 添加虚拟主机
通常来说,在windows的apache环境添加站点,不介意直接修改主配置文件,而且主配置文件修改只能对应一个站点。
所以我们可以通过添加虚拟主机的方法来添加多个站点。修改conf\extra\httpd-vhosts.conf文件
添加如下代码
<VirtualHost *:80> #设置站点方位端口,默认为80端口
DocumentRoot "E:\ZendSkeletonApplication-master\ZendSkeletonApplication-master\public" #网站根目录
SetEnv APPLICATION_ENV "development" #设置应用环境变量
ServerName zf2-tutorial.localhost #设置服务器名,需要和hosts文件中对应
<Directory "E:\ZendSkeletonApplication-master\ZendSkeletonApplication-master\public"> #目录权限设置
DirectoryIndex index.php #设置默认入口文件
AllowOverride All
Require all granted #apche中新的配置限制ip访问目录的方法,这里表示允许任何ip访问这个目录
</Directory>
</VirtualHost>
AllowOverride 参数说明
通常利用 Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即:
< Directory /> AllowOverride None < /Directory> |
在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。
而对于 URL rewrite 来说,至少需要把目录设置为:
< Directory /myblogroot/> AllowOverride FileInfo < /Directory> |
而对于 URL rewrite 来说,至少需要把目录设置为:
AuthConfig
允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType,
LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter,
mod_mime中的 Add* 和 Remove* 指令等等)、控制文档元数据的指令(Header, RequestHeader,
SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain,
CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine,
RewriteOptions, RewriteBase, RewriteCond,
RewriteRule)和mod_actions中的Action指令。
Indexes
允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding,
AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName,
IndexIgnore, IndexOptions, ReadmeName, 等)。
Limit
允许使用控制主机访问的指令(Allow, Deny, Order)。
Options[=Option,...]
允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。
require 参数说明
- ################################################
- 2.2上的配置
- Order deny,allow
- Deny from all
- 2.4上的配置
- Require all denied
- ################################################
- 2.2上的配置
- Order allow,deny
- Allow from all
- 2.4上的配置
- Require all granted
- #################################################
Order allow,deny
可以理解为先允许,后排除,
那么下一句要写deny from ip..来拒绝这些ip访问
Order deny,allow
可以理解为先排除,后允许
那么下一句要写allow from ip..来限定这几个ip访问
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面给出了几个例子在2.4版本上的配置
1. 仅允许IP为192.168.1.1的主机访问
- <RequireAll>
- require all granted
- require ip 192.168.1.1
- </RequireAll>
2.仅允许192.168.0.0/24网络的主机访问
- <RequireAll>
- require all granted
- require ip 192.168.1.0/24
- </RequireAll>
3.禁止192.168.1.2的主机访问,其他的都允许访问,
- <RequireAll>
- require all granted
- require not ip 192.168.1.2
- </RequireAll>
4.允许所有访问,
- require all granted
- 注,这个可以不用加容器 ......
- 直接,写在 .....里面就可以了
5.拒绝所有访问,
- require all denied
2 php 安装
目前windows最新php版本为PHP 5.6
http://windows.php.net/downloads/releases/php-5.6.5-Win32-VC11-x86.zip
下载完成后解压,主目录下php.ini-development开发用的配置文件重名为php.ini
修改扩展路径
extension_dir = "D:\software\php\ext"
把 extension=php_mysql.dll 前的;去掉
加载相应的模块去掉前面的;即可
修改时区,国内用PRC
date.timezone = UTC
修改apache主配置文件httpd.conf
在loadModule列表后加上
LoadModule php5_module "D:/software/php/php5apache2_4.dll"
PHPIniDir "D:/software/php/php.ini"
在IfModule mime_module标签内加入apache对php文件类型的支持
# Add Type for php
AddType application/x-httpd-php .php .html .htm
如果需要有rewrite模块的可以打开注释(用于.htacess文件中开启对url重写的功能)
LoadModule rewrite_module modules/mod_rewrite.so
到这里apache和php的集成已经完成了,
下面加入在根目录下添加一个查看配置的测试文件
<?php phpinfo(); ?>
Success!
3 mysql安装
windows下mySQL安装还是比较简单的,可用“轻松+愉快”来形容。
首先我们去mysql官网下载社区版本http://dev.mysql.com/downloads/file.php?id=455349
-选择install
-确认licence
-选择安装类型 选择自定义,去掉那些庞大无用,比如workbench,建议自己安装轻量级的客户端如sqlyog
-选择相应的开发组件,有odbc,jdbc,c++ connector,.net connector等
-正在安装
-安装完成配置参数 默认端口号3360
-配置root用户和新增用户
-配置服务名称和运行账户
安装完成后我们启动mysql服务/关闭mysql服务 默认安装完已经启动了
启动成功说明安装完成,建议接着安装数据库客户端,比如sqlyog,我一直用这个,很好用。
然后可以用mysql command line client 登录数据库(开始->菜单),也可进入命令行mysql目录下操作
进入命令行,我们先创建一个database
create database test;
使用这个数据库
use test;
创建一张数据表
create table person(
id int AUTO_INCREMENT,
name varchar(255) not null,
primary key(id)
);
插入数据
intert into person values(1, ‘david‘);
最后我们加入测试文件
<?php //链接mysql $link=mysql_connect("localhost","root","") or die(‘FAILD TO CONNECT!‘); //选择数据库库 mysql_select_db("test"); //执行sql $result = mysql_query("select id,name from person"); print"<table border=1>"; print"<tr><th>ID</th><th>Name</th></tr>"; //取出行数组 while($t_result = mysql_fetch_array($result)){ $tr = "<tr><td>".$t_result["id"]."</td><td>".$t_result["name"]."</td></tr>"; print $tr; } print"</table>"; ?>
链接成功!数据显示正常!
4 参考资料
http://blog.sina.com.cn/s/blog_9082c1e501018v5x.html
http://www.chinaz.com/server/2010/0129/105397.shtml
http://httpd.apache.org/docs/current/platform/windows.html#down
5 总结
本文件简单介绍了WAMP环境的安装,此环境主要用于开发和测试,生产环境最好在Linux上部署,如果用Server的话也介意使用IIS,不要用Windows上的apache。后面我们将会介绍Linux上的LAMP环境安装,同时我们要深入了解配置文件。关于MySQL的配置也会在后续的文章中详述!