PHP-----PHP程序设计基础教程----第一章PHP开篇
本章内容知识体系如下所示:
一、php基础知识
1.1 web技术
服务器与客户端
服务器:能够提供某种服务的电脑
客户端:想使用服务器所提供服务的电脑
服务器也是一台电脑,必须安装操作系统。否则就是一台裸机,啥也做不了,更不必说提供服务。一般来说,服务器更多选择linux操作系统,个人电脑更多选择安装windows操作系统。在服务器操作系统安装很多软件,由这些软件对外提供服务。
服务器提供的服务诸如:①http网页服务:apache、tomcat、iis等;②文件上传下载服务:vsftp等;③邮箱服务:sendmail等;④数据存储服务:mysql、qracle等。
小结:服务器就是提供服务的,客户端就是使用服务器提供的服务的。
ip地址
互联网上那么多公司,每家公司都有自己的服务器提供服务。如何找到特定的服务器,使用该服务器提供的服务?借助于ip地址。ip地址相当于每一个连入互联网的设备的身份证号,在浏览器地址栏按照ip地址信息进行访问就能找到互联网上这台服务器。
ip地址分为4段,每段数字取值范围0~255,占1个字节(8位),总共4个字节。例如百度的某台服务器ip地址:123.125.114.114。
本地测试的ip地址:127.0.0.1。在测试时,客户端与服务器都安装在本地计算机上,数据无需任何网络传输。
局域网ip地址以192.168.开头。
例如别人用自己的电脑想要访问我的主机,如果直接输入127.0.0.1进行访问,其实是访问自己的电脑,只能通过192.168.x.x访问,但是这种方式必须要求两台电脑在同一个局域网中。如果想要自己的电脑能够被中国各地其他用户访问到,必须将程序挂在外网上进行访问。
域名
ip可以准确查找互联网上连入的设备,但是ip地址是一串数字,不方便记忆。比如我们可以清除知道北京*,但是需要我们说出北京*的具体经纬度时候我们就不知道了。所以引入了域名的概念。域名就相当于地名一样,方便人们查找到服务器。例如百度的域名:www.baidu.com;qq的域名:www.qq.com。
本地域名:localhost
dns域名解析服务器
当我们在浏览器地址栏中输入www.baidu.com的时候,浏览器并不知道输入的内容对应的是哪个ip地址,所以需要一个服务器对输入的字符串进行解析。这个服务器就是dns域名解析服务器。
dns叫做域名解析服务器,提供域名和ip地址的映射关系。
域名解析流程如下图:
①现在本机的hosts文件中查找;②本机hosts文件中没有,就会请求dns服务器;③dns服务器的ip地址返回,如113.121.121.2;④请求路由器查找113.121.121.1这样的服务器。
本地hosts文件存放地址:c:\windows\system32\drivers\etc\hosts
端口
通过域名可以找到某一台服务器,但是一台服务器可能会提供多种服务,当我们找到这台服务器的时候,究竟想使用这台服务器的什么服务?这个就需要端口号进行区分。
其实我们每次访问网页,最完整的写法应该是:http://www.baidu.com:80,因为80这个端口比较特殊,可以省略不写。
如下是邮箱服务器设置:
总结:ip地址是用来查找某一台服务器的。域名是方便人们记忆的。dns维护域名和ip地址的映射关系。端口是用来区分一台服务器上不同服务的。
http协议
客户端访问服务器,通过ip地址和端口找到了这台服务器,这个时候就认为两个计算机在交流。
协议可以简单的认为两个计算机交流说的话。
常见的协议:①http、https超文本传输协议;②ftp文件传输协议;③smtp简单邮件传输协议。
url地址
在internet上的web服务器中,每一个网页文件都有一个访问标识符,用以唯一标识它的访问位置,以便浏览器可以访问到,这个访问标识符成为url。
示例: http://www.aixuexi.com:80/index.html
在上述的url中,“http”表示传输数据所使用的协议,“www.aixuexi.com”表示要请求的服务器主机名,“80”表示要请求的端口号,“index.html”表示要请求的资源名称。
1.2 php概述
php是用于网页服务器端编程的脚本语言。web服务器是安装了web服务器软件的计算机,存储网站脚本程序。
用户请求对应脚本时,服务器执行对应的脚本并返回执行结果(服务器存在意义)。
常见的开发环境:
wamp: windows + apache + mysql + php
lamp: linux + apache + mysql + php
优点:①开源免费;②跨平台性;③面向对象;④支持多种数据库;⑤快捷性。
1.3 常用编辑工具
①editplus ②notepad++ ③zend studio
二、php开发环境搭建
在使用php语言开发程序之前,首先要在系统中搭建开发环境。通常情况下开发人员使用的都是windows平台,在windows平台搭建php开发环境需要安装apache服务器和php软件。通常有两种方式:①自定义安装;②集成安装。
2.1 apache的安装
自定义安装:
安装包下载地址:https://www.apachelounge.com/download/
下载64位安装包:
下载完解压至想要安装的目录。博主在d盘下建立development文件,将下载的apache服务器软件解压至该文件夹下,后续所有介绍都以此为基础进行总结。注意解压路径是纯英文路径,中间最好不要有空格
第一步:以管理员身份运行命令提示符,将目录切换到apache服务器的解压文件夹下的bin目录下。
第二步:使用 httpd -k install -n "apache" 命令安装apache服务器软件。-k参数指定要执行的命令,-n参数用以给服务器命名。
第三步:修改d:/development/apache24/conf/httpd.conf文件中第39行代码中serverroot值。
修改前:
修改后:
第四步:使用 httpd -t 命令手动检验apache的配置。
第五步:将d:/development/apache24/conf/httpd.conf文件中所有的c:\apache24变为d:/development/apache24。
第六步:修改完成后,再次手动检验,页面效果如下,安装成功!
集成安装
采用集成开发环境安装的方式非常简单,但不够灵活,同时不利于学习,一般来讲不推荐使用。我们在这里做个简单介绍。
集成环境安装包:phpstudy(可以在网上搜索下载,也可以进qq群下载),这里就不粘贴下载地址了。
直接点击上图的exe文件,当屏幕右下角出现phpstudy图表时,说明apache服务已经开始运行。完成后页面如下所示:
2.2 apache的配置
apache的配置主要修改d:\development\apache24\conf目录下的httpd.conf文件的内容,具体配置包括如下几个方面:
监听端口
监听端口可以任意修改为一个未被其他程序监听的端口,可以通过设置配置文件httpd.conf文件中的listen指令后面的数字来修改。在本示例中,博主将监听端口设置为默认的80端口。如下图
网站根目录的配置
web服务核心就是把我们电脑上的静态页面让外部服务器访问到。我们不是想让我们电脑上所有的文件夹都可以让别人访问,只有一个文件夹可以被别人访问,那个文件夹我们称为网站。
网站根目录就是存放我们网站文件的最顶层目录,通常url中域名后面第一个斜线对应的就是网站根目录。
注:动态网站情况比较特殊,需要单独考虑。
默认apache的网站根目录是安装目录中的htdocs文件夹,在博主的开发环境中,对应d:\development\apache24\htdocs文件夹。为了方便对网站文件的管理,一般我们会将其设置在一个自定义目录中(如果你不介意其实不修改也无所谓)。
通过修改配置文件httpd.conf中的网站根目录选项,设置默认网站根目录。博主在f盘建立一个名为www的文件夹,作为网站根目录。具体修改如下:
第一步:在浏览器地址栏输入localhost,出现d:\development\apache24\htdocs下的index.html页面,此时我们还可以访问到。
第二步:在配置文件中,修改网站根目录,将根目录设置为:f:\www
此时重新访问http:localst,提示没有权限访问这台服务器
第三步:解决上述访问权限问题
①apache配置文件中权限访问代码1如下所示:
在(1)中,directory表示目录,“/”斜线通指我们电脑上所有的文件夹。上述四行代码就是为网站配置访问权限的。在(3)中,所有的访问请求都是被拒绝的。即指的是这个网站下的所有的文件夹都是不允许访问的。
②apache配置文件中权限访问代码2如下所示:
在(4)中,设置了网站根目录。第251行又出现了<directory /></directory>标签,通过阅读代码,可以发现,下面的directory是给网站开了一个小门允许用户访问,所以将251行代码中的${srvroot}/htdocs修改为文件根目录,在f:\www文件夹下建立一个html页面,访问结果如下:
默认文档配置
当客户端访问的是一个目录而不是一个具体文件时,服务器默认返回这个目录下的某个文档(文件),这个文档就称为默认文档。
配置文件的第284行directoryindex,默认文档可以设置多个(由前到后依次去找,找到为止,如果没有找到任何一个,则启用目录浏览)
目录浏览
目录浏览指的是在浏览到一个文件夹的时候,如果文件夹中没有默认文档,就会把整个文件夹的结构显示出来。这种做法非常不可取,规避如下:
虚拟主机配置
如果一台机器上只有一个网站的话,没有任何问题,但是如果想要在一台机器上部署多个站点,就必须通过配置虚拟主机的方法解决。
由于后期对虚拟主机的配置操作非常常见,所以我们一般将虚拟主机的配置单独放到一个配置文件中,然后在主配置文件中引入,避免破坏主配置文件的其他配置。
第一步:在主配置文件httpd.conf中取消第509行对引入虚拟主机配置文件的代码注释
第二步:找到apache的虚拟主机配置文件d:\development\apache24\conf\extra\httpd-vhosts.conf,添加一个如下的虚拟主机配置节点。在该文件中,有两个默认的示例代码,可以注释掉。
上图为虚拟主机的配置,如果要配置多个网站虚拟主机,可以复制上述代码,修改文件根目录、权限设置、域名、日志文件等。
注意:
①修改hosts文件达到访问域名的目的,原因很简单,这个域名不是我们自己的,我们没办法修改这个域名在公网上的dns。
②如果使用了虚拟主机,默认必须全部使用虚拟主机,即之前的默认网站必须通过虚拟主机方式配置,否则访问不到。
③如果虚拟主机的端口使用的不是80端口,需要在主配置文件中添加一对对这个端口的监听。
必看:上述所有配置如果要起作用,必须重启apache服务器。
2.3 php的安装
安装好apache之后,开始安装php模块。它是开发和运行程序的核心。在windows中php安装有两种方式:一种是使用cgi二进制文件;另一种是使用apache模块dll,其中第二种方式比较常见。
安装文件:见qq群或者去官网下载。
第一步:将压缩包解压至指定目录,博主解压在d:\development\php文件夹下。注意解压文件中必须包括php7apache2_4.dll文件,解压目录为纯英文目录
第二步:在apache中添加php模块
第三步:在<ifmodule mime_module>节点中添加.php扩展名解析支持
第四步:默认文档配置节点<ifmodule dir_module>中添加index.php文件
重启apache
配置完毕,我在site2站点下写一个php文件,显示效果如图: