PHP——基本使用(一)
Apache安装与配置
install
- 下载地址:https://www.apachelounge.com/download/,选择2.4.33版本64位
- 将程序解压到一个英文目录下,以管理身份打开cmd
- cd <解压目录>/bin,执行命令切换到apache解压的盘符的bin目录
- httpd.exe -k install -n "Apache",执行命令对bin目录下的httpd进行安装,-n参数是指定服务器的名称,默认名称是Apache24,很丑陋,所以改成了Apache
- httpd.exe -k uninstall -n "Apache",执行命令可对apache进行卸载
- 执行完安装命令之后,会有一个错误,大概意思是在conf目录下的http.cof 配置文件中指定的根目录serveroot并不是一个有效的目录
Errors reported here must be corrected before the service can be started.
httpd.exe: Syntax error on line 37 of C:/apache/conf/httpd.conf: ServerRoot must be a valid directory
- 我们找到这个配置文件,37行指定的根目录是ServerRoot "C:/Apache24",但是我们解压后因为改了名字,所以再配置文件我们也需要做出相应的更改,修改为ServerRoot "C:/apache"
- 再去执行cmd命令,httpd.exe -t,对httpd.exe是否正确安装进行测试,发现又报了错误,错误还是在上面的配置文件中,大概意思是在248行,DocumentRoot 'C:/Apache24/htdocs' 不是一个目录或者不可读,其实还是和改了名字有关系,所以选中出现错误的地方,利用sublime中快捷键一直按ctrl+d直到文件最后,进行修改
AH00526: Syntax error on line 248 of C:/apache/conf/httpd.conf:
DocumentRoot 'C:/Apache24/htdocs' is not a directory, or is not readable
- 修改之后再次执行httpd.exe -t 测试命令,发现Syntax OK,但是其实还是有一个错误,大概意思缺少服务器的域名,提示我们通过ServeName这个指令进行全局设置。这里需要说明的是,这个报错我们其实可以忽略,因为我们之后需要做虚拟主机
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::dd08:7c28:a78f:e5bd.
Set the 'ServerName' directive globally to suppress this message
- 此时我们通过运行=>services.msc打开服务,看到apache服务已经被成功安装,但是并没有显示启动。

start
- httpd.exe -k start -n "Apache" 执行命令后,还是会报上面的AH00558错误,这里我们忽略,此时再去查看服务,Aapche服务已经正在运行了

- 此时我们再浏览器中输入127.0.0.1,就会弹出it works
DNS
- 这里我们再介绍下DNS的概念,客户在发送的请求的时候,首先会从本地的hosts文件下去找域名匹配的ip,否则则会去DNS服务器去解析,再获取ip后才会去web服务器上获取数据。我们可以通过修改本地C:\Windows\System32\drivers\etc下的hosts文件,依然能够访问
127.0.0.1 wuqiuxue.dec
端口
- 端口就好比是与外界交往的门,只有通过这个门,数据才会传递。在我们输入127.1.0.0的ip地址时,我们并没有输入端口号,因为url会默认添加一个80端口。同时apache的conf目录下的httpd.conf配置文件中的58行,用了Listen 80 进行了配置。所以客户输入ip地址,自然是去找这个ip地址下的拥有80端口的apache服务器。我们可以通过cmd执行netstat -ano命令查看端口占用情况,确实看到本地有一个服务将80端口占用,这里有这个服务的pid号——5424,通过执行tasklist|findstr "5424"命令,我们就可以查到是哪个服务占用了此端口,很显然是apache.

网站根目录
- 服务器将网站的根目录默认指向的是DocumentRoot "c:/apache/htdocs",htdocs下有一个index.html文件,很麻烦,我们可以自定义网站根目录。但是这里需要再次澄清一个概念,客户通过apache服务器80端口访问服务器磁盘上的数据,但是并不是代表可以访问所有服务器上所有的文件,这里apache有权限的设置,/ 斜杠代表的是服务器上所有的文件,大概意思是所有重写被拒绝,所有需求被拒绝

- 因为是拒绝访问,所以我们在将网站根目录地址更改的时候,还要对这个改过的目录进行设定,系统默认设定是是Require all granted,所以我们也就不用改了

默认文档
- 当客户端访问的是一个目录而不是具体文件,服务器默认就会返回这个目录下的某个文档(可以设置),这个被称之为默认文档。默认文档可以配置多个,用空格隔开,从前往后寻找,直到找到可用的为止,如果没有找到则启用一个目录浏览器

目录浏览
- 启用目录浏览是很丑陋的,所以我们要进行设置,还是在网站根目录中进行配置,将index删除即可

虚拟主机
- 一台机器上如果部署多个站点,那么我们需要通过配置虚拟主机的方式解决
- httpd.conf在主配置文件中,虚拟主机的引入被注释了,解除注释。然后找到所在目录,找到虚拟配置文件进行更改,这样的方式是为了减少对主配置文件的修改,做到功能化单一化,当然即使我们改错了也没事,我们可以通过conf目录下的original目录进行恢复操作,这里存放这系统的默认配置

- 找到配置虚拟主机的httpd-vhosts.conf文件,修改里面的配置文件,因为是修改了域名,所以我们还需要在hosts文件进行域名与ip地址的绑定
- 别名一般就是在顶级域名前加上www. 这被称为二级域名

- 如果还需要需要另外一个站点,那么我们还需要再配置一个虚拟主机,具体配置如下,同样还需要再hosts文件进行域名绑定,但是此时这样设置会报错,无法获取服务


- 原因很简单,因为在配置第一个虚拟主机的时候,网站的根目录地址与主配置文件的地址相同,而主配置文件已经对了这个根目录进行了权限修改,而第二个虚拟主机所指定网站根目录显然是没有进行权限修改,保险起见,将第一个虚拟主机也添加一个directory的设置

- 同时我们也可以将这两个站点都放在www下,只是不同的文件夹,而且也不用配置文件权限,因为主配置文件对www已经配置过了
- 只要配置了虚拟主机,流程就不会再走主配置文件的中的网站根目录配置,如果再浏览器上输入127.0.0.1,本来这是指向主配置文件的,现在默认走第一个虚拟主机的配置
请求的流程
- 客户端请求的是一个静态页面,那么服务器会原封不动的发给客户,这是静态网站,而动态网站,会根据每一次的请求,动态执行一段代码,这里我们介绍PHP
- 服务器根据url地址去找对于的文件,如果发现文件不是静态文件,那么它会将此文件发给其他程序让其解析,最后将执行结果发给客户
- apache服务器就相当与包工头,主要是分配任务,php就相当与农民工,主要是处理代码,现在我们来安装php,不然apache有任务也处理不了

PHP安装与配置
- 下载地址:https://windows.php.net/download#php-7.1,解压到指定文件夹下,我们需要选择Thread Safe版本的,这个版本与apache搭配,non-Thread Safe是与iis搭配
- 打开apache主配置文件,进行加载配置,将php解压目录下的php7apache2_4.dll文件的路径放入,如果路径存在空格,需要用双引号将整个路径包裹起来

- 在模块设置的标签内,还要进行设置,虽然引入了mine.typeswen文件,但是里面不包括php,所以自己手动添加


- 既然支持了php,那么我们还将默认文档进行追加,也支持index.php

随机推荐
- Linux system log avahi-daemon[3640]: Invalid query packet.
2014-06-11 Check the Linux system log find the errorr: Jun 9 11:18:49 hostname avahi-daemon[3640]: ...
- win7系统下重启之后打印机服务就会自动停止的解决方法
win7系统下重启之后打印机服务就会自动停止的解决方法: 第一步.进入Win7系统后,您需要启动win7系统的任务管理器窗口,然后切换到进程这一栏中,将spoolsv.exe运行进程结束掉.之后,您同 ...
- 传智播客ADO.Net项目开发教程具体解释
内容简单介绍: 本教程为传智播客.Net培训课堂的现场录像,请到140623ls" target="_blank">传智播客.Net学院下载很多其它免费.Net视频 ...
- 一个python自动化测试的例子
http://blog.csdn.net/galen2016/article/details/70882483 https://www.cnblogs.com/TankXiao/category/47 ...
- OpenFileDiag 使用
MSDN模版 Stream myStream =null; OpenFileDialog openFileDialog1 =newOpenFileDialog(); openFileDialog1.I ...
- windows server 证书的颁发与IIS证书的使用 Dapper入门使用,代替你的DbSQLhelper Asp.Net MVC中Action跳转(转载)
windows server 证书的颁发与IIS证书的使用 最近工作业务要是用服务器证书验证,在这里记录下一. 1.添加服务器角色 [证书服务] 2.一路下一步直到证书服务安装完成; 3.选择圈选 ...
- 在Linux上安装zsh
简单介绍: 相对于绝大多数linux发行版默认的shell--bash,zsh绝对是一个优秀的替代品.zsh是交互型shell,同一时候它也是一个强大的编程语言,很多bash,ksh,tcsh优秀的地 ...
- [RK3288][Android6.0] Display驱动初始化流程小结【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/52584903 Platform: RK3288OS: Android 6.0Kernel: ...
- POJ 2080:Calendar
Calendar Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12546 Accepted: 4547 Descrip ...
- zabbix 监控zookeeper
1.监控脚本如下:check_zookeeper.sh 1 2 #!/bin/bash echo mntr | nc 127.0.0.1 2182 | grep "$1" |awk ...