PHP——基本使用
Posted 站错队了同志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于PHP——基本使用的主要内容,如果未能解决你的问题,请参考以下文章