首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Day-1——临门一脚

目录

php的前世今生.............................................2

php的应用领域.............................................2

php运行环境.............................................4

web软件的运行模式.............................................4

web运行流程.............................................4

php网页运行原理.............................................5

安装apache..............................................6

配置apache以运行php程序.............................................8

补充一个检测apache的配置语法的命令.............................................9

php的配置...........................................11

时区配置...........................................11

php的模块配置...........................................13

mysql的安装...........................................15

主机(站点)配置...........................................23

一个站点的2个核心信息...........................................23

单站点配置项...........................................23

端口监听...........................................23

设置主机(站点)的名字:服务器名,站点名.......................23

设置主机(站点)的物理路径.......................24

目录访问权限...........................................24

目录访问权限中的“分布式权限”.....................................................25

多站点的配置......................................................27

站点别名的设置.....................................................28

目录别名(虚拟目录)的设置.....................................................29

今天的目标1:

echo “hello world”; //表明配置好了apache

echo “

现在时间:” . date(“Y-m-d H:i:s”) ; //表明配置好了php

$link = mysql_connect(“localhost”, “root”, “root” ); //表明配置好了mysql

目标2:

能够建立多个站点,比如:

php的前世今生

名称:PHP(外文名:PHP:Hypertext Preprocessor,中文名:"超文本预处理器" 翻译成 "PHP超文本预处理器" 更精确 )

起源:PHP于1994年(26岁)由Rasmus Lerdorf(丹麦,雷斯莫斯·勒道夫)创建

作者:Rasmus Lerdorf 出生在1968年9月22日(现在47岁)。1993年(25岁)毕业于加拿大滑铁卢大学计算机科学专业,尊称PHP之父。

PHP的出现:之前Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。

这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量,1994年用C语言重新编写。

目前我们使用的PHP的正是C语言编写的。

PHP的版本历史:

PHP1

在1995年以PersonalHome Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档。并且发布了PHP1.0!

核心功能:留言本、访客计数器等简单的功能。

(简单对比:

1995年左右Java诞生(起源目的为家电设备开发的技术,后来加强对互联网的支持)

1972年左右C语言诞生,C的前身是B语言和汇编语言,是PHP,Java及操作系统的“母亲”。

C,C++算是通用语言可以用来开发出很多专门语言,例如:PHP(互联网专用)

举例:钢材是通用材料,但是不能很好的当菜刀用,但是可以用它打造很好的菜刀。也可以打造为汽车部件等。

假设吃饭是最终目的:做饭要用菜刀(PHP语言就是个工具),但是只有菜刀不够,还可以用钢材打造锅,水壶等工具。

目前:PHP互联网网站开发的王牌,在这个领域从市场规模上击败了ASP,C#,JSP等,算是为互联网而生的专用语言. )

PHP2

Rasmus Lerdorf在1995年6月8日将 PHP/FI 公开发布,希望可以透过社群来加速程序开发与寻找错误。这个发布的版本命名为 PHP 2

功能拓展:在1.0基础上加入循环语句和数组变量对Mysql的支持等等。

PHP3

PHP正式命名为"PHP:Hypertext Preprocessor",1998年6月正式发布 PHP 3。

在1997年,任职于 Technion IIT公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础。

ZeevSuraski和 Andi Gutmans 在 PHP3 发布后开始改写PHP 的核心,这个在1999年发布的剖析器称为 Zend Engine,

他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。

PHP4

在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布.

PHP5

2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine。

核心拓展:面向对象功能与PDO支持,从此开始了PHP5的10多年的发展历程。

PHP5.2系列

2006年11月后发布。

2010年12月16日-PHP 5.2.16 作为最后一个版本,以后不再有新版本。

目前知名的成熟产品基本都建立在这个系列之上.

PHP5.3系列

2009年6月发布5.3

2013年5.3.28最新版。

PHP5.4系列

2011年12月25日发布5.4

2015-06-11 PHP 5.4.42最新推荐使用的稳定版本(推荐使用)

PHP 5.5.0

2012年11月15日 PHP5.5.0内测版

2013年6月20日,PHP开发团队宣布推出PHP5.5.0,不再支持 Windows XP 和 2003 系统

2015年6月11日 PHP5.5.26(推荐使用版本)

PHP 5.6系列

2014年1月 23 ,PHP5.6.0内测版本

2015年6月11日,PHP开发团队宣布PHP5.6.10可用(新产品推荐使用)

PHP6(没有,夭折了)

PHP7

2015年6月25日,此版本目前共测中,强烈不建议在生产中使用。

目前主流版本:PHP5.2(很多产品兼容), 5.3,5.4,5.5

版本说明:

alpha版:内部测试版。α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本包含很多BUG,功能也不全,主要是给开发人员和测试人员测试和找BUG用的。

beta版:公开测试版。β是希腊字母的第二个,顾名思义,这个版本比alpha版发布得晚一些,主要是给"部落"用户和忠实用户测试用的,该版本任然存 在很多BUG,但是相对alpha版要稳定一些。这个阶段版本的软件还会不断增加新功能。如果你是发烧友,可以下载这个版本。

rc版:全写:Release Candidate(候选版本),该版本又较beta版更进一步了,该版本功能不再增加,和最终发布版功能一样。这个版本有点像最终发行版之前的一个类似预览版,这个的发布就标明离最终发行版不远了。作为普通用户,如果你很急着用这个软件的话,也可以下载这个版本。

Released最终发行版

知识点二、

一、PHP版本选择

PHP发展多年版本众多,最新可用版本为PHP5.6学习采用版本为PHP5.5系列(版本了解:http://windows.php.net/download/)。

学校提供学习使用的的WampServer中自带PHP5.5系列。

PHP常见版本号示例如下:

PHP5.5 VC11 x86 Non Thread Safe

PHP5.5 VC11 x64 Thread Safe

二、关于PHP的编译器

VC11PHP5.5和5.6的编译环境,较早版本之前会有VC9和VC6。

MSVC11(Visual C++ 2012)是微软推出的一款C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境.

VC6.0(Visual C++ 6.0)

VC 9.0(Visual C++ 2008)

经常碰到的:Vcredist 是单词Visual C++ redistribute (坚持VC++运行库,简单理解就是一些功能函数库)。

想运行对于编译环境下的软件就必须让客户端安装对应运行库,如果缺少运行程序会无法正常运行。

三、关于操作系统位数

X86一般指 32位系统

X64指64位系统

四、关于线程安全或不安全

ThreadSafe指线程安全的

NonThread Safe指非线程安全的。

五、如何知道自己的PHP版本,是否线程安全等?

最简单通过 来打印结果。结果中如果有Thread Safety 值为enabled一般指线程安全的。

如果是使用ISAPI 的方式来运行PHP就必须用ThreadSafe(线程安全)的版本;

而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

IIS主要使用FastCGI形式运行PHP:Non Thread Safe

Apache+PHP主要使用:Thread Safe

最终如何选择并不重要,最要的是让你的产品尽量兼容5.2到5.6 如果不用新特性能很好地解决的问题尽量使用更通用的技术。

如果一个功能在学习中能用,或在你的电脑上能用,上传到服务器上不能用,就要考虑版本兼容问题或配置问题。具体解决方案

查手册确定是配置问题还是版本问题,然后解决。

php的应用领域

web服务器端脚本:主要作用

应用程序图形界面

命令行脚本

o运行php文件:php.exe -f "php文件路径"

o运行php代码:php.exe -r "php脚本代码"

下载php,选择适用于Windows或linux平台的版本。

php作为一门语言,本身可以是一个纯绿色版的“文件夹”——称之为“php语言包”

其中,有一个文件为:php.exe,可以用来它“执行”php代码:

演示1:

这是1base.php文件:

通过php.exe去“执行”它,如下:

演示2: 直接运行php代码:

形式:

php.exe -r "php脚本代码"

php运行环境

web软件的运行模式

一个重要观念:

web软件的运行模式中,总是先在客户端(浏览器端),发起一个“请求”,然后,服务器端才产生反馈动作(就是“运行”程序),并因此而返回给该浏览器一定的信息——就是所谓的应答(响应);

其中运行过程中,所涉及到的一些相关技术或软件如下:

浏览器端: 服务器端 数据库端

html服务器软件 语言mysql

cssapachePHPoracle

jsIIS java mssql

..... ...... ......

其中,浏览器端的技术是“无可替代”的,而其他层面的,都是有可替代性。

web运行流程

浏览器输入地址,回车(发送请求)

根据规则找到对应web服务器。规则如下:

首先在本机hosts文件中找对应IP

hosts文件位置:操作系统/system32/drivers/etc/

注意:需要以管理员身份打开编辑器,才能编辑保存它

如果hosts中没有找到,则到互联网上找对应IP(DNS服务器中)

如果还是没有找到,则终止请求,返回“找不到服务器”提示

web服务器取得对应文件(就是请求的文件)

如有需要(比如php文件),对该文件进行一定的处理(比如php代码执行)

将文件(或执行结果文件)返回给浏览器(返回应答)

浏览器接收到文件

浏览器处理文件(显示/执行)

php网页运行原理

安装apache

注意:

将这个压缩包解压到…/amp/apache/下,然后按住shift+鼠标右键,在此处打开命令提示符

输入 httpd.exe-h 查看命令的用法

依次是启动重启 停止 安装 配置 卸载

根据提示出的用法,我们使用httpd.exe -k install命令安装apache2.4,在安装之前需要手动配置apache配置文件。

根据readme_first.html完成配置并测试

成功后,浏览器中显示如下:

apache安装后的目录结构:

配置apache以运行php程序

将刚才的网页1base.php放到apache的htdocs文件中,并通过浏览器“浏览”:

可见,根本无法运行php!!!

其实,我们就需要去配置apache了:

分2步:

第一步:

装载php“模块”——其实就是指php语言包中的一个文件而已!

A:首先,我们将php语言模块,拷贝到计划的目录中来:...... /amp/php/

B:打开apache的配置文件:apache安装位置/ conf / httpd.conf

第二步:

指定php后缀的文件,去“找”这个php模块处理(执行)——这里,基本是固定写法:

然后,重启apache,再次刷新刚才的页面:

可见,php已经通过apache发挥作用了!

注意:apache配置文件修改后,必须重启apache,才能生效!

另外:第2步中“设定php后缀的文件由php模块去处理”的命令,可以有另一种写法,如下:

检测apache的配置语法的命令:

命令所在位置:

apache安装位置/bin/httpd.exe

命令使用方式:

httpd.exe -t查看语法是否正确

命令结果:

如果配置文件httpd.conf没有语法错误,就返回: syntax OK

如果有错误,则会提示第几行错误!

用法1:强行拖入法

用法2:配置环境变量法:

我的电脑》属性》高级系统设置》高级》环境变量》系统变量》path》编辑,

然后,在其中加入刚才httpd.exe文件所在的完整目录路径,注意使用英文分号(;)跟以前的内容分开:

然后,就可以在cmd中直接使用:

php的配置

时区配置:

先看php的代码:

浏览的结果为:

这是,因为,我们还没有配置php语言模块(语言引擎)的运行时区!

需要去修改php的配置文件:

php的配置文件位置:

php语言包/php.ini

初始,并没有该文件的直接版本,而是提供了2个选择性版本:

我们采用php.ini-development,改其后缀就可以了!

第一步:

然后打开该文件,并查找关键字:timezone:

修改为:

第二步:

在apache的配置文件(httpd.conf)中,设置php.ini文件的路径(位置):

然后,还是要重启apache,然后,重新刷新刚才显示时间的网页,结果为:

php的模块配置

理解一件事情:

php(语言模块)是apache的众多模块之一!

mysql是php语言中的众多模块之一!

目标:运行一行“连接mysql数据库”的代码:

但运行结果却是报错:调用未定义的函数!

这是,因为,mysql作为一个php的“模块”尚未配置!

解决,分2步:

第一步:

在php.ini文件中,设定php模块所在的路径(查找关键字extension_dir):

我们要修改为指向php语言包中的ext这个目录的“完整物理路径”:

第2步:

“打开”mysql这个模块就可以了(查找关键字php_mysql.dll):

修改为:

然后,重启apache,重新浏览刚才的网页,结果为:

下面就可以安装mysql数据库软件,以“建立”mysql数据库服务器。

mysql的安装:

https://dev.mysql.com/downloads/installer/

然后,重新浏览刚才的php网页(将代码略修改为以下):

主机(站点)配置

一个站点的2个核心信息为:

主机名(服务器名/站点名): ServerName 服务器名

站点位置(站点目录路径): DocumentRoot “实际物理路径”

默认情况下,apache安装成功,就默认配置好了一个“站点”,该站点的实际位置在:

apache安装位置/htdocs/

单站点配置项

端口监听:

在apache的主配置文件httpd.conf中:

也可以写为:

实际应用中,我们几乎都是80。

设置主机(站点)的名字:服务器名,站点名

ServerName 服务器名

举例:

也可以设置为:

设置主机(站点)的物理路径:

形式:

DocumentRoot “实际物理路径”

重要观念:

站点就是“文件夹”——我让它当站点,它就是站点。

比如:

原始的站点在这里:

修改为:

在浏览“localhost”,发现被进制访问(Forbidden),然后添加访问权限,如下:

就可以了。

目录访问权限

一个站点,就是一个“目录”。

每个目录,都应该给其设定“访问权限”,语法如下:

#设置当一个请求中没有给定请求的文件名又没有默认网页(首页)的时候,显示文件列表

Options Indexes

#设置权限控制的先后顺序,只有2种:Deny,Allow(先拒绝,后允许),Allow,Deny(先允许后拒绝)

Order Deny,Allow

#Deny用于设定要拒绝访问的来源地址或服务器名,几乎没有实际意义!

Deny from 拒绝名单 比如:deny from 192.168.3.8 172.180.4

Allow from 允许名单 比如:Allow from all

#设置该文件夹下的“默认网页”(首页),可以设置多个,用于请求中不带文件名的时候自动使用该文件作为“返回”页面。

DirectoryIndex index.php index.html main.php default.php abc.php 123.html

目录访问权限中的“分布式权限”:

对于某个目录的访问权限,我们在apache中使用Directory来设定,但可能不够方便:

1,apache配置修改,必须重启apache

2,某个站点中的“下级目录”访问权限,不方便单独设置,

这种,可以称为“集中式权限”;

分布式权限,就是:针对某个网站的任何一个下级目录,都可以单独去设置其访问权限,并且可以不重启apache就生效。

做法:分2步:

第1步:

在该站点对应目录权限的Directorty配置中添加一条:

第2步:

在该目录下的任何子目录中,创建一个特殊的文件( .htaccess ),在该文件中写所需要的“权限内容”(几乎跟Directory中的写法一样):

然后,在该文件夹中添加一个文件: .htaccess 其内容为:

Deny from all

Allow from 192.168.1.xxx

在该文件夹中,就多了一个文件:

然后,重新访问刚才路径(刷新):

多站点的配置

分3步:

第1步:

在apache的主配置文件httpd.conf中,“打开”多站点虚拟主机配置文件项(关键词:vhosts):

初始:

修改为:

第2步:

在httpd-vhosts.conf文件中,设定希望提供“多站点”服务的IP地址和端口号,通常默认就是:*:80,其中“*”代表所有IP,默认其实apache安装好之后就设置好了,无需手动设置(关键字NameVirtualHost):

第3步:

然后就一个站点一个站点加上!形式如下:

#这里设置站点1的各项信息

#这里设置站点2的各项信息

...........

注意:

1,先把httpd-vhosts.conf文件中的2个初始安装生成的站点,删除!!!

2,每个站点的设置项,主要就3个:

ServerName,

DocumentRoot,

...

3,在多站点配置中,第一个站点被称为“默认站点”,如果某个请求的域名无法跟任何一个站点“匹配”,就会当做请求的是默认站点去处理(应答)

4,一旦实现了多站点配置,则最初安装成功时的“默认站点”就失效了,我们可以将“localhost”当做一个普通站点重新设置就可以了,也可以将其放在第一个位置又重新作为默认站点。

举例:

站点别名的设置:

目录别名(虚拟目录)的设置:

这个d1就称为“真实目录”;

虚拟目录就是:

该站点下不存在某目录名,但却可以使用同样的语法形式,去访问,比如:

www.abc.com/d2 //假设该站点目录下根本就没有d2这个目录,此时却可以访问

实现这种技术,就是所谓“目录别名”(虚拟目录)的设置,如下:

在一个站点中,做如下2步:

第1步:

设置目录别名的名字和其对应的“实际真实目录(文件夹位置)”:

Alias /目录别名的名字 “实际真实目录(文件夹)的位置”

Alias /abc “D:/amp/apche/htdocs….”

第2步:

设置该真实目录的访问权限(否则是禁止访问的):

。。。。。。跟其他目录权限设置一样

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180502G0A0AZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券