0%

PHP环境搭建

PHP简介

PHP定义

PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。是一种广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用途脚本语言。它的语法接近 C,Java 和 Perl,而且容易学习。该语言让 Web 开发人员快速的书写动态生成的网页。

PHP前身:Personal HomePage,个人主页,使用Perl语言开发的一种写个人主页的语言

PHP:PHP Hypertext Preprosessor,php超文本预处理器,底层使用C语言

平台支持(window,Linux,UNIX)

数据库支持(Sqlserver,mysql,Oracle,Access)

网站相关的基本概念

网站的动与静

静态网站特点

  1. 网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
  2. 静态网页的内容相对稳定,因此容易被搜索引擎检索
  3. 静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
  4. 静态网页的交互性较差,在功能方面有较大的限制。

动态网站特点

  1. 交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后Web发展的潮流。
  2. 自动更新:即无须手动更新HTML文档,便会自动生成新页面,可以大大节省工作量。
  3. 因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面。
  4. 此外动态网页是与静态网页相对应的,也就是说,网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见形式,而是以.asp、.jsp、.php、.perl、.cgi等形式为后缀。在动态网页网址中有一个标志性的符号——“?”

服务器概念

服务器(server),也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

服务器:能够提供服务的机器,取决于机器上所安装的软件(服务软件)

Web服务器:提供web服务(网站访问),就需要安装web服务软件,Apache,tomcat,iis等

IP的概念

IP:Internet Protocol,网络之间互联协议。网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性。(每台电脑(如果只有一个网卡的话)都有一个唯一的IP地址)

域名

域名(Domain Name),是由一串用点分隔的名字组成(www.baidu.com)的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。**域名是一个IP地址上有“面具”** 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。

特殊IP:127.0.0.1,代表本机

特殊域名:localhost

DNS

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

用户输入域名localhost => DNS(localhost 127.0.0.1)=> 服务器电脑

端口

端口(Port),可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。

用户输入域名localhost:端口 => DNS(localhost 127.0.0.1)=> 服务器电脑 => 软件(服务)

网站访问流程

浏览器发起访问–》DNS解析域名–》服务器电脑–》服务软件

静态网站

image-20220129222735907

动态网站

动态网站访问流程与静态差不多,但是会多出几个内容:服务器端解析、数据库

image-20220129223402559

Apache的安装和使用

安装

image-20220129230152301

image-20220129230235487

目录介绍

image-20220129230320686

httpd指令的使用

因为没有配置环境变量,所以httpd只能在apache的bin目录下使用

这里介绍了两个指令

httpd -M查看使用的模块

image-20220129231247378

httpd -t验证配置文件是否有效

image-20220129231310602

配置默认站点

1.让Apache确定服务器上访问的位置:网站文件夹所在位置

conf文件夹中的Httpd.conf文件中的:DocumentRoot

image-20220129231630244

2.方便用户使用名字访问对应的网站:给文件夹对应的取一个别名

conf文件夹中的Httpd.conf文件中的:ServerName

image-20220129231906230

端口可以单独实现:httpd.conf:listen

凡是涉及到Apache配置文件的修改,那么需要重启Apache才能生效

3.实现DNS域名解析:通常默认站点都是本地DNS:hosts文件

查看是否能够访问

image-20220129232630161

这里的内容可以在htdocs文件夹的index.html中修改

安装PHP

image-20220130145350704

解压后与apache文件夹放在一起

image-20220130145522298

php目录介绍

image-20220130150013564

PHP.exe就是可以解析PHP代码转变成HTML代码从而让浏览器可以解析的。

通过CMD控制器进入到php.exe所在目录(没有配置php环境变量就要进文件夹)

image-20220130150237621

通过php.exe运行命令来指定要解析的PHP脚本就可以:php.exe -f PHP文件所在路径

首先要在PHP所在路径创建php文件,这里创建了index.php并写入了简单的echo代码

image-20220130150654236

配置Apache加载PHP模块

若不配置,php与apache不能产生联系,用浏览器访问php文件,仍然是代码

image-20220130150933799

1.Apache加载PHP模块:在Apache的主配置文件(httpd.conf)中加载对应的PHP提供的模块

在LoadModule最后面添加LoadModule php5_module PHP所提供的模块链接所在路径

image-20220130151437174

可以用在apache的bin目录下使用httpd -thttpd -M来检验是否加载成功

然后重启apache

2.然后apache要分配工作给php

如果是PHP代码就交给PHP处理:文件后缀判断.php结尾肯定是PHP代码

image-20220130152046731

然后用在apache的bin目录下使用httpd -thttpd -M来检验是否加载成功,并重启Apache

再访问刚刚访问的网址

image-20220130152148617

ok了,然后还有第三步

3.将PHP的配置文件加载到Apache配置文件中:共同生效

在Apache中指定PHP配置文件所在路径

image-20220130152711629

php.ini文件默认是不存在的,是以development和production格式存在,需要格式化

将development复制一份,并改后缀

image-20220130152929533

重启apache

说明:PHP的配置文件已经加入到Apache的配置项中,意味着php.ini的修改需要Apache重启才会生效。

安装和使用MySQL

image-20220130153308455

选择自定义

image-20220130153406888

修改路径

软件安装路径

image-20220130153550707

数据安装路径

image-20220130153724063

然后无脑下一步

进入配置页面

image-20220130153947795

image-20220130154128619

选第一个

image-20220130154322675

image-20220130154455181

image-20220130154554371

image-20220130155033879

等待安装完成

image-20220130160045517

目录结构说明

image-20220130160153996

image-20220130161145616

软件设计结构:C/S和B/S

C/S:Client客户端/Server服务端,用户需要安装客户端产品才能访问服务器,而且只能访问一种软件(当前自己)

B/S:Browser浏览器/Server服务端,用户只需要安装浏览器,就可以访问所有的服务器(B/S架构服务)

访问MySQL

首先要打开mysql服务

image-20220130161442154

Mysql是一款C/S架构的软件,需要通过客户端来访问服务端(MySQL提示也提供了其他模式的访问:通过一些插件扩展来充当客户端)

启用MySQL客户端:mysql.exe,该软件本身可以通过CMD控制台运行

本身客户端:mysql.exe

image-20220130161645785

也可以直接通过cmd访问

image-20220130162435116

这是之前安装的那个mysql8,要连接我们现在安装的mysql5则要输入端口

image-20220130162603446

MySQL客户端访问服务端需要进行寻找匹配:连接认证

连接:IP和端口确认,如果是本地都可以省略

-h主机地址—-》-hlocalhost(可以是IP)

-P端口—》-P3306

认证:通过用户名和密码进入服务器

-u用户名—》-uroot,不可以省略(匿名用户除外)

-p密码—》-proot

PHP加载MySQL

PHP本身不具备操作MySQL数据库的能力,需要借助PHP操作MySQL的扩展来实现。

1.PHP加载MySQL扩展:php.ini文件中

查找mysql并去掉前面的 ; 然后重启apache

image-20220130182957868

之后修改以前创建的index.php文件,查看php相关配置

image-20220130183159581

然后访问页面

image-20220130183229980

搜索mysql,发现并没有生效

2.PHP中所有的扩展都是在ext文件夹中,需要制定扩展所在路径:extension_dir

image-20220130183734593

然后重启apache

image-20220130184006809

设定php系统时区

如果不设置会有警告

image-20220130184151362

通过php.ini中的timezone配置项来实现

image-20220130184421102

重启后生效

image-20220130184443181

配置虚拟主机

一台服务器很贵,如果只能部署一个网站,那么非常浪费。所以需要通过其他渠道来实现一台主机上部署多个网站。

什么是虚拟主机

虚拟主机:Virtual machine,并不存在真实的主机,但是可以提供真实主机所实现的功能。

通俗的讲,虚拟主机就是将计算机中不同的文件夹进行不同的命名,然后可以实现让服务器(Apache)根据用户的需求从不同的文件夹(网站)中读取不同的内容。

虚拟主机的分类

在Apache中,可以将虚拟主机划分成两类:

1、 基于IP的虚拟主机:一台电脑上有多个IP,每个IP对应一个网站

原理:电脑默认只有一个IP,因为通常只配有一个网卡;但是有的电脑(服务器居多)可以配置多个网卡,每个网卡可以绑定一个IP地址。

2、 基于域名的虚拟主机:一台电脑上只有一个IP,但是IP下可以制作多个网站,但是需要给每个网站不同的名字(虚拟主机名)

搭建基于域名的虚拟主机

在Apache中,虚拟主机的搭建有两种方式:

1.在主配置文件中搭建:需要手动开启虚拟主机(基于域名)

NameVirtualHost *:80

2.在专门的虚拟主机配置文件中配置

2.1在主配置文件中加载虚拟主机配置文件(httpd.conf):虚拟主机配置文件已经开启了虚拟主机NameVirtualHost

image-20220130190746631

2.2虚拟主机从配置文件(extra/httpd-vhosts.conf)中配置虚拟主机

image-20220130191051384

①增加一个对应的站点文件夹位置:DocumentRoot

image-20220130191323263

②增加主机名字:文件夹的别名:ServerName

image-20220130192600474

③ 增加域名解析DNS:hosts

host文件地址:C:\Windows\System32\drivers\etc

image-20220130192211393

重启apache

image-20220130192625049

④需要给当前设定的站点(目录)访问权限

1
2
3
4
5
<Directory 'D:/discuz'>
order deny,allow
deny from all
allow from all
</Directory>

image-20220130201434788

然后随便在discuz里面添加一个html文件,之后访问

image-20220130201632542

成功

⑤配置访问列表:当访问是一个目录时候(没有指定具体要访问的文件)

Options Indexes [FollowSymLinks],(中括号表示可有可无)如果访问目录,那么列表显示所有文件

image-20220130203126391

image-20220130203138613

注意,此处不能有html文件,否则无法显示

⑥ 当用户访问指定目录不指定文件的时候,通常需要系统指定一个默认文件

DirectoryIndex 默认的文件列表,使用空格分离

image-20220130203451919

注意:如果说网站中整个网站根目录允许访问,但是其中还有其他文件夹不允许访问:可以增加多个Directory标签,针对不同的文件夹

例如,如果不想让访问上述的 新建文件夹 则可添加 DirectoryIndex index.php shl.txt

3.一旦启用虚拟主机配置文件,那么默认的主机地址localhost就不再生效,如果想要生效:为localhost增加单独的虚拟主机

若想不影响,则再添加一条virtualhost就行

image-20220130204205483

结果如下

image-20220130204444679

(本内容摘自B站黑马程序员,但略有所改动)