第1章准备工作

1. 准备工作

关于古今中外PHP的发展就不多说了,大家摆渡一下就会到达光明的彼岸。

本章,我们将介绍Apache和PHP应用的基本知识,并为学习和测试做好准备;不过,为了简化准备工作和测试环境,在介绍PHP相关内容时只考虑Windows环境下的使用;在本书偏后的章节中,我们将会讨论在Fedora系统中如何配置和测试Apache和PHP网站。

这一章的内容包括:

  • 简介
  • 配置Apache
  • 配置PHP
  • 安装Apache服务
  • 创建PHP文件
  • 注释
  • print和echo语句

1.1. 简介

Apache+PHP+MySQL的组合,曾经是开源世界构建网站的黄金搭档,关于它们的历史,在这里就不多说了,相信大家都可以很方便的了解这些内容。

不过,为了更好的理解本书的内容,我们还是简单的了解一下Apache、PHP和MySQL在整个应用环境中的角色。

图中,我们可以看到,Apache、PHP与数据库的角色有着明显的分工:

  • Apache是一个网站服务,负责对Web服务端口(如HTTP默认端口80)的侦听,当一个访问者连接到Apache服务器时,Apache会对访问者提交的请求做出响应,并返回相应的资源,如访问者需要访问哪个网页、哪个图片等等;如果用户访问的是PHP文件,那么PHP的代码就会执行,并返回执行结果。
  • PHP是一项动态页面技术,其功能是在Web服务器端通过编程对访问者提交的请求进行更多的处理,并返回相应的内容。如访问者登录时,PHP就可以对其提交的用户名、密码等信息进行验证。整个PHP环境包括了编程语言、内置和扩展开发资源,我们可以使用这些资源很方便地进行Web服务器端开发。
  • SQLite和MySQL分别是两种数据库。虽然说SQLite是PHP环境中集成的一种数据库,不过,对于项目的分层设计来讲,数据库的应用层面都是相同的,它们都是为项目提供外部的数据管理服务。

1.2. 配置Apache

开始配置Apache和PHP网站之前,请大家注意以下几个路径,本书的大部分测试内容都位于这几个目录之中:

  • d:\Apache24,Apache2.4的安装目录。
  • d:\php56,PHP 5.6的安装目录。
  • d:\mysql56,MySQL 5.6安装目录。
  • d:\phpweb\root,PHP网站目录,也是本书源代码所在目录。

我们可以从http://www.apache.org网站获取Apache的最新版本,请注意,本书使用的是Apache 2.4中的64位版本,下载的是zip文件,直接解压到D:盘根目录即可,此时,在d:盘根目录下就是有一个Apache24目录了。需要注意的是,在Windows环境下,Apache 2.4需要VC++2010运行库的支持。

Apache的配置文件位于安装目录下的/conf/httpd.conf文件。其中,对于初学者,或者是说本书的测试环境,我们需要注意和修改的参数项包括:

  • Define SRVROOT "d:/apache24",定义系统变量SRVROOT的值,即Apache服务根目录的路径。注意路径中使用的“/”符号,即使是在Windows系统下,也是没有问题的。
  • ServerRoot "d:/apache24",同样是指定Apache服务根目录的路径。默认的设置使用了SRVROOT常量,不过,为了更清晰地显示参数内容,我们使用了实际的路径,大家可以根据实际需要设置。
  • Listen 8080,Apache侦听的端口,在本书的示例中,我们使用了8080端口,而不是HTTP协议中默认的80端口。
  • ServerName localhost:8080,设置Apache服务名称,localhost指定为本地主机,并指定端口为8080,这和Listen设置的端口号是一致的。在实际的网站中,需要将localhost设置为相应的服务器IP地址或域名。
  • DocumentRoot "d:/phpweb/root",设置网站的根目录。
  • <Directory "d:/phpweb/root">,与网站根目录相关的参数。
  • DirectoryIndex index.php,网站的默认页面,如果指定更多的默认主页,可以使用空格将它们隔开,如DirectoryIndex index.php index.html。
  • ScriptAlias /cgi-bin/ "d:/Apache24/cgi-bin/",设置CGI相关资源的路径。
  • ,设置与CGI相关的指令。

此外,默认情况下,通过Apache服务,用户是可以在浏览器中查看网站的文件和目录结构的,很多情况下,这显然是不需要的,我们可以通过修改httpd.conf配置文件禁止此功能,在配置文件中找到类似如下的代码。

<Directory "d:/phpweb/root">  
    Options Indexes FollowSymLinks  
</Directory>

将代码中的Indexes删除,即可禁止索引网站文件与目录结构的功能。

为了让Apache服务支持PHP,我们还需要在Apache配置文件中设置以下参数,你可以手工添加到配置文件末尾。

LoadModule php5_module d:/php56/php5apache2_4.dll  
AddType application/x-httpd-php .php  
Action application/x-httpd-php "d:/php56/php.exe"

请注意LoadModule指令中,使用了与Apache 2.4版本相对应的PHP模块(php5apache2_4.dll文件),如果你的测试环境中使用了不同版本的Apache,请注意此处应该引用相对应的文件。

1.3. 配置PHP

我们可以从http://php.net/网站获取PHP的最新版本,本书使用的是PHP 5.6.x中的64位版本,下载的同样是zip文件,压缩时指定路径为“d:\php56”。在Windows环境下,PHP 5.6.x需要VC++ 2012运行库的支持。

PHP的配置文件是php.ini,初始情况下这个文件是没有的,不过,我们可以从几个配置文件中复制一个并重新命名,默认情况下,在PHP的安装目录中会有以下两个配置文件:

  • php.ini-development
  • php.ini-production

现在,我们是学习和测试,所以,可以选择复制php.ini-development文件,重新命名为php.ini,并将此文件复制到Windows的安装目录,一般是在“c:\windows”目录中,如果你拿不准Windows系统的安装目录,可以执行cmd命令打开命令行窗口,然后使用如下命令查看:

echo %windir%

在php.ini文件中,我们需要注意的参数包括:

  • doc_root = "d:/phpweb/root",设置网站的根目录,这与Apache中DocumentRoot参数的值是一样的。
  • extension_dir = "d:/php56/ext",指定PHP扩展库的路径,它一般都位于PHP安装路径中的ext目录。
  • extension = php_mysqli.dll,我们可以看到php.ini文件中包含很多extension指令,它们都是PHP中的功能扩展模块,大多都使用分号(;)定义为了注释,在实际应用中,我们可以根据实际情况将所需要的扩展库前的分号删除,然后重启服务即可。如php_gd2.dll、php_mysqli.dll、php_sqlite3.dll、php_mbstring.dll等。
  • date.timezone = "Asia/Shanghai",设置时区,大陆地区可以设置为上海或重庆,完整的时区列表可参考:http://php.net/manual/zh/timezones.php。

1.4. 安装Apache服务

本部分将介绍如何在Windows环境下启动Apache服务,我们使用的是64位的Windows 7操作系统。

前面,Apache和PHP的基本配置已经完成,下面所需要做的工作就是启动Apache服务,我们所使用是Apache安装路径下/bin目录中的httpd.exe命令。

运行cmd打开Windows的命令行窗口,然后切换到d:\Apache24\bin目录,如果你忘记了DOS命令的使用,下面是你需要执行的两行命令:

C:\Users\当前Windows用户名> d: <回车>  
D:\> cd apache24\bin <回车>

安装/删除Apache服务

以下命令可以将Apache安装为Windows系统服务:

httpd -k install -n"Apache24"

其中,-k参数指定为操作类型,install为安装服务,而uninstall为删除服务。-n参数指定所操作的服务名称。完整的参数说明可以使用“httpd -?”命令查看。

启动/停止Apache服务

成功安装Apache服务后,我们可以通过两种方式启动服务,一是通过Windows中的net命令,如:

net start Apache24

第二种方法是使用httpd.exe命令,如:

httpd -k start -n"Apache24"

而停止Apache服务同样可以使用这两种方法,如:

net stop Apache24

httpd -k stop -n"Apache24"

1.5. 创建PHP文件

本书中,我们在Windows系统下使用的PHP代码编辑工具是Notepad++,这是一个开源的文本编辑器,而且是免费使用的,可以方便地编写各种类型的文本文件,特别是各种类型的源代码文件。当然,你也可以使用自己熟悉的文本编辑器或集成开发环境(如Eclipse、Zend Studio等),只要能够方便、快捷地编辑源代码就可以了。

如果是第一次打开Notepad++,会自动创建一个新文件,我们可以随时通过菜单“语言”选择文档中需要关注的源代码类型,相应的关键字可以进行高亮显示(如PHP、HTML、CSS、JavaScript等)。另一个小技巧是可以随时调节显示文本的尺寸,我们可以使用Ctrl+"+"放大字体尺寸,或者Ctrl+"-"键缩小字体尺寸。

下面,我们编辑一个名为index.php的文件,并保存到d:\phpweb\root目录(或者是你指定的PHP网站根目录),文件内容如下:

<?php  
    phpinfo();  
?>

然后,我们在浏览器中打开localhost:8080(就是我们在Apache配置文件中设置的服务名称)。如果看到如下页面,则说明Apache和PHP已经正常工作了。

这个页面包含了大量的PHP配置信息,实际应用中,我们可以根据观察这些PHP的参数设置,并根据实际需要修改php.ini配置文件中相应的参数。请注意箭头所指的参数,这里是实际载入配置文件(php.ini)的路径,如果参数应用方面有问题,首先应该确认是否应用了正确的配置文件,然后,我们可以在这个配置文件中进行相应的修改。

我们知道,PHP是服务器端的动态页面技术,在页面文件中,可以是完全由PHP代码组成,就像前面的代码一样,同时,也可以与HTML页面内容混合使用,如下面的代码就是在一个HTML5页面中嵌入了PHP代码块(/template.php):

<?php  
    // PHP代码  
?>  

<!doctype html>  
<html>  
<head>  
<meta charset="utf-8" />  
<title>PHP页面模板</title>  
</head>  
<body>  
<h1>页面内容</h1>  
</body>  
</html>

现在,我们在浏览器中通过“localhost:8080/template.php”查看这个页面,如下图:

无论在页面中如何应用PHP代码,它都应该包含在<?php和?>之间,如果只有简单的一行代码,我们也可以将它们都写在一行,如:

<?php echo 'Hello PHP' ?>

此外,我们可以在php.ini中将short_open_tag参数设置为On(默认为Off),此时,可以使用简单的打开标签,如:

<? print 'Hello PHP' ?>

不过,使用<?php作为开始标签可以让代码更清晰——这里是PHP代码!所以,本书中我们都将使用<?php和?>来包含PHP代码。

1.6. 注释

在代码中添加注释是常见而又非常重要的工作,PHP中,我们可以使用三种注释方法:

  • 单行风格注释,由 // 到行尾作为注释。
  • #,脚本风格注释,从#符号到行尾作为注释。
  • / /,C风格注释,在//之间的内容都作为注释,可以包含多行注释内容。

1.7. print与echo语句

print语句和echo语句都用于在页面中显示一些内容,但它们也有一些区别,首先看一下print语句的使用,它一次只能显示一个字符串,如下面的代码:

print "Hello PHP";  // 显示Hello PHP

在开发过程,我们可能需要一次显示多个内容,如下面我们定义了三个字符串变量(更多内容将在下一章讨论):

$str1 = "abc";  
$str2 = "def";  
$str3 = "ghi";

现在,我们需要做的就是在一条语句中将这三个字符串显示出来,使用print语句有两种方法:

print "$str1$str2$str3";

print $str1.$str2.$str3;

第一种方法是在双引号字符串中直接使用变量,它可以直接显示变量的内容;第二种方法是将三个字符串连接成一个字符串后显示。

使用echo语句显示这两个变量的内容,可以使用下面的代码。

echo $str1,$str2,$str3;

echo语句可以一次显示多个字符串,每个字符串使用逗号分隔;与print语句相比,这种方法不需要进行字符串的连接操作,也不需要在字符串中查找变量。

实际应用中,我们可以根据显示内容的具体要求来确定使用print或echo语句。

1.8. 小结

本章,我们首先介绍了如何在Windows系统下搭建Apache+PHP网站环境,并了解了如何在页面中添加PHP代码,从下一章开始,我们就可以进行更多的学习和测试工作了。

目录

  • 前言
  • 第1章准备工作
  • 第2章PHP编程基础
  • 第3章面向对象编程
  • 第4章类的继承
  • 第5章接口
  • 第6章异常处理
  • 第7章Web项目开发
  • 第8章处理XML和DOM
  • 第9章使用SQLite3数据库
  • 第10章数据操作代码结构
  • 第11章使用MySQL数据库
  • 第12章文件操作
  • 第13章图形处理
  • 第14章综合应用
  • 第15章支持IIS和SQLServer
  • 第16章在Fedora中测试
  • 第17章继续学习