第4章

    PHP安装和使用

    本章我们将介绍LAMP的最后一个部分PHP的安装和使用。PHP的配置在LAMP中起决定作用,它是建立Apache与MySQL之间的桥梁。

    第1节 为什么要使用PHP

    PHP是一种用于创建动态Web页面的服务端脚本语言。如同ASP和JSP,用户可以混合使用PHP和HTML编写Web页面,当访问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访问端的浏览器。但是与ASP或JSP不同,PHP是一种源代码开放程序,拥有很好的跨平台兼容性。用户可以在Windows NT系统以及许多版本的Unix系统上运行PHP,而且可以将PHP作为Apache服务器的内置模块或CGI程序运行。

    除了能够精确地控制Web页面的显示内容之外,用户还可以通过使用PHP发送HTTP报头。可以通过PHP设置cookies,管理用户身份识别,并对用户浏览页面进行重定向。PHP具有非常强大的数据库支持功能,能够访问几乎目前所有较为流行的数据库系统。此外,PHP可以与多个外接库集成,为用户提供更多的实用功能,如生成PDF文件等。

    你可以直接在Web页面中输入PHP命令代码,因而不需要任何特殊的开发环境。在Web页面中,所有PHP代码都被放置在“<? php”和“?>”中。此外,用户还可以选择使用诸如<SCRIPT LANGUAGE="php"></SCRIPT>>等的形式。PHP引擎会自动识别并处理页面中所有位于PHP定界符之间的代码。

    PHP脚本语言的语法结构与C语言和Perl语言的语法风格非常相似。用户在使用变量前不需要对变量进行声明。使用PHP创建数组的过程也非常简单。PHP还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码。

    第2节 PHP版本

    PHP当前最流行的两大版本是PHP 4和PHP 5。本书选用PHP 5.1.2为例子。它除了具备PHP过去版本的优点外,还融合了Zend Engine 2.0技术。引进了私有和保护成员变量,它们可以定义可视化的类属性,PHP 5还引入了抽象类和方法,数据抽象层(PDO),等等。

    PHP 5相对于过去的版本,对XML的支持性更好、更灵活,并且对java的兼容性和强大的面向对象功能更加显著。

    第3节 PHP开发工具

    PHP开发工具很多,开发人员可以借助开发工具,写出更优秀的PHP程序。本书仅向读者介绍Zend开发工具。

    Zend Studio是专业开发人员在使用PHP整个开发周期中的集成开发环境(IDE),它包括了PHP所有必需的开发部件。通过一整套编辑、调试、分析、优化和数据库工具,ZendStudio加速开发周期,并简化复杂的应用方案。Zend Studio设计时考虑了商务应用开发的需要,是开发者利用PHP创造强有力数据库应用软件的完美开发环境。Zend Studio具有专业和企业开发者开发、配置、调试和管理关键商务PHP应用所需的易使用性、可伸缩性、可靠性和扩展性。

    第4节 安装PHP

    PHP是本书最后一个安装项目,LAMP是否能工作关键是取决于PHP的安装和配置,在本节将学到如何在PHP安装过程中,根据需要添加定制PHP功能。

    1.确定配置选项和扩展名

    1)基本配置选项

    第4章PHP安装和使用 - 图1

    编译时加入调试符号。

    第4章PHP安装和使用 - 图2

    设置被安装文件的布局,TYPE是PHP(默认)或GNU。

    第4章PHP安装和使用 - 图3

    在DIR(默认为PREFIX/lib/php)中安装PEAR。

    第4章PHP安装和使用 - 图4

    不安装PEAR。

    第4章PHP安装和使用 - 图5

    使用PHP自带的SIGCHLD处理器。

    第4章PHP安装和使用 - 图6

    禁用在搜索路径中传递其他运行库。

    第4章PHP安装和使用 - 图7

    启用libgcc的精确链接。

    第4章PHP安装和使用 - 图8

    包含试验性的PHP流。不要使用这个选项,除非要测试代码。

    第4章PHP安装和使用 - 图9

    定义zlib的安装目录。

    第4章PHP安装和使用 - 图10

    使用POSIX线程(默认)。

    第4章PHP安装和使用 - 图11

    编译共享库[默认=是]。

    第4章PHP安装和使用 - 图12

    编译静态库[默认=是]。

    第4章PHP安装和使用 - 图13

    为快速安装优化[默认=是]。

    第4章PHP安装和使用 - 图14

    假设C编译器使用GNU ld[默认=否]。

    第4章PHP安装和使用 - 图15

    阻止锁(可能破坏平行编译)。

    第4章PHP安装和使用 - 图16

    尝试仅使用PIC/非PIC对象[默认=都使用]。

    第4章PHP安装和使用 - 图17

    编译内存限制支持功能。

    第4章PHP安装和使用 - 图18

    禁用URL形式的fopen包裹器,该包裹器允许通过HTTP或者FTP访问文件。

    第4章PHP安装和使用 - 图19

    仅导出必需的符号,查看INSTALL文件以获得更多信息。

    2)PHP选项

    第4章PHP安装和使用 - 图20

    启用后使得规则和依赖关系(和有时的混乱)临时对安装程序不再有用。

    第4章PHP安装和使用 - 图21

    设置php.ini的搜索路径,默认为PREFIX/lib。

    第4章PHP安装和使用 - 图22

    默认启用安全模式。

    第4章PHP安装和使用 - 图23

    在安全模式时仅允许在DIR目录中执行。默认目录为/usr/local/php/bin。

    第4章PHP安装和使用 - 图24

    默认启用magic quotes。

    第4章PHP安装和使用 - 图25

    默认仅用短形式的开始标签<?。

    3)SAPI选项

    下面列出PHP可用的SAPI(服务器应用编程接口)。

    第4章PHP安装和使用 - 图26

    指定AOLserver的安装路径。

    第4章PHP安装和使用 - 图27

    编译共享的Apache模块。FILE是可选的Apache apxs工具的路径,默认指向apxs。请确认指定的apxs已经安装在服务器中,并且它不是Apache源码包中的那个apxs。

    第4章PHP安装和使用 - 图28

    编译静态Apache模块。DIR是Apache编译目录的顶层,默认为/usr/local/apache。

    第4章PHP安装和使用 - 图29

    启用mod_charset的转换表。

    第4章PHP安装和使用 - 图30

    编译共享的Apache 2.0模块。FILE是可选的Apache apxs工具的路径,默认指向apxs。

    第4章PHP安装和使用 - 图31

    为使用Caudium编译PHP为一个Pike模块。DIR是Caudium服务器目录,默认为/usr/local/caudium/server。

    第4章PHP安装和使用 - 图32

    禁止编译PHP的命令行版本(CLI)(使用它将同时强制使用—without-pear选项)。

    第4章PHP安装和使用 - 图33

    启用潜入的SAPI编译。TYPE或者为shared或者为static,默认为shared。

    第4章PHP安装和使用 - 图34

    为Zeus服务器以ISAPI模块方式编译PHP。

    第4章PHP安装和使用 - 图35

    指定Netscape/iPlanet/SunONE的安装目录。

    第4章PHP安装和使用 - 图36

    为Pi3 Web服务器编译PHP模块。

    第4章PHP安装和使用 - 图37

    以Pike模块方式编译PHP,DIR是Roxen的根目录,默认为/usr/local/roxen/server。

    第4章PHP安装和使用 - 图38

    使用Zend线程安全编译Roxen模块。

    第4章PHP安装和使用 - 图39

    包含servlet支持。DIR是JSDK的安装目录。此SAPI要求java扩展必须作为共享模块编译到PHP中。

    第4章PHP安装和使用 - 图40

    编译PHP为thttpd模块。

    第4章PHP安装和使用 - 图41

    编译PHP为TUX模块(仅在Linux下有效)。

    第4章PHP安装和使用 - 图42

    编译PHP为WebJames模块(仅在RISC的操作系统中有效)。

    第4章PHP安装和使用 - 图43

    禁止编译CGI版本的PHP。

    第4章PHP安装和使用 - 图44

    启用内部服务器重定向的安全检测。如果您在Apache下使用CGI版本的PHP,请启用该选项。

    第4章PHP安装和使用 - 图45

    如果启用该选项,PHPCGI目录可以安全地放在Web目录树的外面,人们无法避开.htaccess的安全限制。

    第4章PHP安装和使用 - 图46

    如果启用,CGI模块将被编译为支持FastCGI。

    第4章PHP安装和使用 - 图47

    如果该选项被禁用,路径将不能工作,例如/info.php/test? a=b

    2.下载和准备工作

    获得最新的PHP系统(本书采用PHP 5.1.2,你可以根据自己的偏好,下载不同的版本),官方下载地址:http://us3.php.net/downloads.php。我们也推荐速度较快的LUPA社区,下载地址:http://tech.lupaworld. com/lamp/下载并解压缩,假如我们下载到/root目录下:

    第4章PHP安装和使用 - 图48

    解压后会生成PHP 5.1.2目录。接下来建立安装目录,这里我们把PHP安装到/usr/local/。

    第4章PHP安装和使用 - 图49

    3.编译安装PHP

    进入解开的文件目录,按顺序执行下列操作:

    第4章PHP安装和使用 - 图50

    以上配置选项仅仅实现了共享的Apache模块,MySQL数据库支持,更多的功能可以通过添加参数来实现。

    接下来编译安装,执行:

    第4章PHP安装和使用 - 图51

    最后拷贝php.ini配置文件。这里的php.ini-dlist文件在解压后的文件包中。

    第4章PHP安装和使用 - 图52

    4.配置Apache和PHP

    编辑httpd.conf文件:

    第4章PHP安装和使用 - 图53

    在配置单里增加

    第4章PHP安装和使用 - 图54

    并找到下面一行

    第4章PHP安装和使用 - 图55

    改为

    第4章PHP安装和使用 - 图56

    支持PHP格式。

    当一切都配置好之后重启Apache:

    第4章PHP安装和使用 - 图57

    如果使用带有mod_ssl的Apache,需要执行:

    第4章PHP安装和使用 - 图58

    至此,PHP安装完成。

    5.运行PHP

    测试运行PHP,首先写一个简单的PHP脚本检测安装是否成功。

    第4章PHP安装和使用 - 图59

    将其保存到/usr/local/Apache/htdocs/,命名为index.php文件。访问http://localhost如果看到如下页面,恭喜你PHP安装成功。

    第4章PHP安装和使用 - 图60

    第5节 PHP语法

    如果你是一位程序员或者是一个懂一点C语言的人,初次接触PHP,你一定会感到很亲切,它的语法风格接近C等基本语言。要用PHP写个网页,只需要一个简单的文字编辑器,像Linux的vi工具、Windows的记事本。而且只要有程序设计基础,不论是C、C++、Pascal、JAVA,学PHP就会很快,因为它和其他语言的语法或是结构差不多。

    1.Hello world

    学习一个程序语言最基本的就是显示Hello world,也就是做最基本的输出,如果不会输出,不管程序执行了什么,你也得不到任何结果。比较一下C语言和PHP语言的输出方式:

    1)C语言的输出

    第4章PHP安装和使用 - 图61

    2)PHP语言的输出

    第4章PHP安装和使用 - 图62

    2.常量与变量

    1)常量

    PHP预先定义了几个常量,并提供了一种机制在运行时自己定义。常量和变量基本上是一样的,不同的是:常量必须用DEFINE函数定义。常量一旦定义好,就不能被重新定义。PHP中预先定义好的常量:

    FILE

    当前正在处理的脚本文件名。如果使用在一个被包含的文件中,那么它的值就是这个被包含的文件,而不是包含它的文件名。

    LINE

    正在处理的文件的当前行数。

    PHP_VERSION

    表示PHP的当前版本。

    PHP_OS

    PHP所在的操作系统名字。

    TRUE  FALSE

    真值  假值

    当然你可以用DEFINE函数定义更多的常量。举例,定义常量LUPA:

    第4章PHP安装和使用 - 图63

    在PHP里面有些预设好的常量,像是基本的True以及False各代表1和0,另外PHP_OS可以显示出服务器的系统。要注意的是常量不能在任何引号中使用。

    第4章PHP安装和使用 - 图64

    2)变量

    PHP的变量是由符号($)加上变量名称组成。变量名称第一个字不得为数字,而且变量名称中也不得包含符号。

    正确的变数:$ a、$ aa、$ a1、$ a_2、$_aaa

    不正确的变数:$ 1a、$ aa/s、$ a $ a、$ 1 \%

    变量使用范例:

    第4章PHP安装和使用 - 图65

    在使用echo时,变量内容可以用””或是‘’或是不使用引号,但为了避免弄混,初学者尽量养成使用””的习惯。

    ●””:引号中间的数据可以包含字符串、数字或是变量。

    ●‘’:引号中间只能包含字符串及数字。

    ●不使用引号:只能纯字符串、数字或是纯变量。

    第4章PHP安装和使用 - 图66

    关于全局变量与局部变量

    学过C/JAVA/C++之类的朋友一定了解main(){}内声明的变量所达的区域。PHP为解释性语言而不是编译性语言,我们也知道PHP不存在main(){}主体,怎么声明呢?其实PHP页面本身就是一个main(){},只要是在页面内而非在函数内声明的变量我们都称其为全局变量。例如:

    第4章PHP安装和使用 - 图67

    从上面的一个例子,我们可以很简单明了的看明白PHP中全局与局部变量之间的差距。

    3.运算符

    运算符为程序中用于执行计算动作的符号。PHP的运算符跟C很类似,大致分为以下几类:

    ◆算术运算符

    ◆比较运算符

    ◆逻辑运算符

    ◆字符串运算符

    各类运算符的说明请参考接下来各小节的说明,主要介绍常用运算符。

    1)算术运算符

    算术运算符主要由加、减、乘、除及余数组成,如下表:

    第4章PHP安装和使用 - 图68

    举例说明:

    第4章PHP安装和使用 - 图69

    2)比较运算符

    比较运算符由等于、大于、小于、大于等于、小于等于、不等于组成,如下表:

    举例说明:

    第4章PHP安装和使用 - 图70

    3)逻辑运算符

    逻辑运算符由AND、OR、XOR、!等组成,如下表:

    第4章PHP安装和使用 - 图71

    下表称为真值表,T代表真,F代表假,我们整理当A、B在各种情形下,各逻辑运算符的运算结果:

    第4章PHP安装和使用 - 图72

    举例说明:

    第4章PHP安装和使用 - 图73

    4)字符串运算符:

    “.”是连接变量与变量或是变量与字符串。举例说明,如下:

    第4章PHP安装和使用 - 图74

    再举个例子:

    第4章PHP安装和使用 - 图75

    4.流程控制

    流程控制是程序中用于控制或选择某一程序区段执行方式的语法。有了流程控制以后,可以让原先一行一行的程序产生许多变化,能够重复或控制某一段程序是否被执行。在PHP中,主要有以下几种流程控制方式:

    1)if判断语句

    if是最常用的判断式,只针对单一条件做判断。要是不符合指定的条件,就不执行指定的动作,然后继续执行这个条件式之后的程序。

    第4章PHP安装和使用 - 图76

    如果执行的动作只有一个,可以省略{}。比如:

    第4章PHP安装和使用 - 图77

    2)if else语句

    if else可以针对if描述的条件,执行指定的动作,若不符合条件,则执行else的动作。

    第4章PHP安装和使用 - 图78

    可以应用在连接数据库时告知使用者是不是联机成功,if联机成功就进行查询的动作,else送出联机失败的消息。

    3)if else if语句

    if else if是针对多种状况做判断,再决定执行哪一种动作,只要执行到符合的条件就执行,然后忽略之后的其他状况,结束这个判断。

    第4章PHP安装和使用 - 图79

    4)switch

    switch也有转换的意思,对指定的变量一个个的比对,switch跟if条件语句不同的地方在于就算找到了符合的条件也会继续对比下去,一旦遇到指定变量,除非对比完毕或是遇到break指令,不然会把之后所有的动作执行完。

    第4章PHP安装和使用 - 图80

    第4章PHP安装和使用 - 图81

    5)for循环

    php使用for循环的方式与其他语言相同,for里面包含三个部分,起始值、变量范围、变量递增、递减。

    第4章PHP安装和使用 - 图82

    6)while循环

    php使用while循环的方式与其他语言相同,在()内条件成立时,会继续执行{}内的程序代码,适合用来处理数量不确定的数据。

    第4章PHP安装和使用 - 图83

    第4章PHP安装和使用 - 图84

    5.数组

    PHP的数组使用相比较C语言简单得多,使用前不需要定义,所以也不需要定义数组的大小。要定义一个数组,使用array()函式:

    定义数组:

    第4章PHP安装和使用 - 图85

    但通常是不需要这个步骤的,这个定义的动作只会让程序稍微慢一点,除非要替这个数组一次加入多个元素,否则这个函式可以省略。

    在数组加入元素:

    第4章PHP安装和使用 - 图86

    也可以这样,让数组中的元素在开始就被定义好:

    第4章PHP安装和使用 - 图87