PHP开发Apache服务器配置


Posted in PHP onJuly 15, 2015

照此配置流程,绝对一路畅通,可保无虞。

昨天弄了个PHP小程序,想在本地跑一下测试,可是工作电脑没有安装环境,于是下载了一个wamp,一路畅通,Apache、Mysql、PHP就全有了。启动wamp服务,在浏览器里输入“http://localhost”,访问正常,跳出wamp首页。于是,下面想把自己的CrashServer网站配置到Apache里,可以通过虚拟域名在本地访问测试,结果遇到不少问题,今日一通Google研究,终于任督二脉全通。

1、首先,Apache的配置文件是httpd.conf和httpd-vhosts.conf,我们先来看下wamp安装好后,httpd.conf的默认配置。

DocumentRoot "d:/wamp/www/"

<Directory />
  AllowOverride none
  Require all denied
</Directory>

<Directory "d:/wamp/www/">
  Options Indexes FollowSymLinks
  AllowOverride all
  Require local
</Directory>
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

要想通过虚拟域名访问网站,就需要配置一下httpd-vhosts.conf。那么需要启动httpd-vhosts.conf,因为默认是关闭的,所以把配置文件中#Include conf/extra/httpd-vhosts.conf前面的#去掉。于是httpd-vhosts.conf启用了,那么我们去编辑httpd-vhosts.conf这个文件。

2、httpd-vhosts.conf文件的位置,在apache目录下的conf/extra,上面的Include conf/extra/httpd-vhosts.conf其实已经告诉了你它的位置。

在这个文件中,添加配置我上面的CrashServer网站:

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot "D:/wamp/www/CrashServer"
  ServerName crash.com
</VirtualHost>

首先,我的CrashServer是放在wamp/www下面的,这是wamp默认的网站目录,其次,我想在本地测试的时候,用crash.com就能访问到CrashServer,于是配置如上。

在这里,为了让我们能通过crash.com访问本地站点,所以需要修改hosts文件,添加 127.0.0.1  crash.com。

到这里,配置完毕了,于是重启Apache,输入crash.com访问,结果正常访问。但是,当以localhost访问时,原来出现的是wamp的主页,现在却显示CrashServer了,于是还要在hosts里追加 127.0.0.1  localhost,在httpd-vhosts.conf中,追加上localhost的站点配置,现在看起来就是这样了:

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot "D:/wamp/www"
  ServerName localhost
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "D:/wamp/www/CrashServer"
  ServerName crash.com
</VirtualHost>

OK,到此基本可以结束了,网站都配置好了,看起来非常非常的简单。但是对于我却不是这样的,我昨天碰到了如下问题。

首先,我的CrashServer一开始不是放在wamp/www下的,而是放在E:\360Downloads下面的,于是就有了如下配置:

<VirtualHost *:80>
  DocumentRoot "E:/360Downloads/CrashServer"
  ServerName crash.com
</VirtualHost>

这没错吧,路径都对,虚拟域名也对,可是访问的时候,却提示403 Forbidden,没有权限。于是Google,哦,知道了原来是要给CrashServer目录加上权限,于是修改配置如下:

<VirtualHost *:80>
  DocumentRoot "E:/360Downloads/CrashServer"
  ServerName crash.com

  <Directory E:/360Downloads/CrashServer>
    Order Allow,Deny
    Allow from All
    Require all granted
  </Directory>
</VirtualHost>

重启Apache,访问正常了。首先,新增的Directory,是可以在httpd.conf中添加的,也可以在httpd-vhosts.conf中添加,我认为在后者里面添加更好,配置内容更加清晰明了,项目目录权限跟随着项目站点配置。在上面新增的Directory中,我们给了360Downloads下的CrashServer目录加了权限,允许访问了,所以就不再提示403 Forbidden了。

这个问题,现在写起来是这么的简单轻松,可问题出现的时候,却很让人困扰和郁闷。对于项目在wamp/www之外的,需要给项目目录权限才可,注意:

Order Allow,Deny
Allow from All
Require all granted

这三条缺一不可,这是配置了允许外部计算机访问服务器站点。

3、今天问题解决后,想到通过同一局域网下的其他设备访问我的站点,于是用手机,在浏览器中输入我的电脑的ip,不能访问,再次Google,原来需要修改在httpd.conf中的配置:

<Directory "d:/wamp/www/">
  Options Indexes FollowSymLinks
  AllowOverride all
  Require local
</Directory>

其中,Require local,没Google出来,但看名字知道,是只允许本地访问,于是改成Require all granted,允许所有请求访问,手机就可以访问了。

参考,http://roteg.iteye.com/blog/1465380,这里是访问验证配置的解释。

这里,有篇老外写的配置博文,很好,https://www.kristengrote.com/blog/articles/how-to-set-up-virtual-hosts-using-wamp#wamp-step-7,但是唯独一点,在他的Step 7的时候,给项目目录添加权限:

<Directory C:/Users/Kristen/Documents/Projects>
  Order Deny,Allow  
  Allow from all 
</Directory>

却恰恰少了Require all granted,导致最后还是403 Forbidden,搞得我非常郁闷。

---------------------------------------------------------------------------------补充 2015-07-13-------------------------------------------------------------------------------------------------

感谢评论中唯一的评论者的提醒:Require all granted这是2.4上边才需要的,2.2不需要。

这就可以理解了为什么Google出来的技术文章,有些提到require all granted,而有些则没有。

---------------------------------------------------------------------------------end 补充 2015-07-13--------------------------------------------------------------------------------------------

此配置是在如下wamp环境进行的:

PHP开发Apache服务器配置

至此,在Apache下配置PHP站点,全部完成。

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP 5.0 Pear安装方法
Dec 06 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
很好用的PHP数据库类
May 27 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
ajax+php控制所有后台函数调用
Jul 15 #PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 #PHP
php实现网页缓存的工具类分享
Jul 14 #PHP
浅谈php错误提示及查错方法
Jul 14 #PHP
浅谈php的优缺点
Jul 14 #PHP
使用URL传输SESSION信息
Jul 14 #PHP
利用“多说”制作留言板、评论系统
Jul 14 #PHP
You might like
php a simple smtp class
2007/11/26 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript Excel操作知识点
2009/04/24 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python实现一个简单的ping工具方法
2019/01/31 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
村官学习十八大感想
2014/01/15 职场文书
企业军训感想
2014/02/07 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
初中毕业感言300字
2015/07/31 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript