1.3 PHP服务器构建
为了构建PHP服务器,在服务器的选择上,我们选择免费开源的WEB服务器Apache和数据库服务器MySQL。对于初学者而言,Apache、MySQL以及PHP预处理器的安装和配置较为复杂,这里选择 WAMP(Windows + Apache + MySQL + PHP)集成安装环境快速安装配置 PHP 服务器,省去安装配置服务器带来的麻烦,更快地进入PHP编程的殿堂。
目前两款常用的WAMP集成安装环境是WampServer和AppServ,它们都集成了Apache服务器、MySQL服务器和PHP预处理器。本书以WampServer为例介绍PHP服务器的安装和配置。
从安全性和性能上来讲,LAMP(Linux + Apache + MySQL + PHP)优于WAMP (Windows + Apache + MySQL + PHP),不过由于Windows操作系统更易使用,因此开发PHP应用程序时一般选择Windows操作系统作为开发环境;由于PHP具有平台无关性(跨平台),PHP应用程序发布、布署时,通常使用Linux操作系统。
1.3.1 服务器安装前准备
WampServer软件由德国人开发,该软件在Windows操作系统平台下集成了Apache、MySQL和PHP,其中还自带phpMyAdmin软件,极大方便了PHP服务器的安装配置和使用。WampServer下载的官方网址是:http://www.wampserver.com/en/download.php,目前WampServer的较新版本是WampServer2.0i。打开该网站地址后,会看到如下警告信息。
WARNING : do not try to install WampServer 2 over WAMP5. If WAMP5 is installed on your computer, save your data, uninstall it and delete the WAMP5 directory before installing WampServer 2. (警告:不要试图在 WAMP5 上安装 WampServer 2。如果 WAMP5 已经安装在计算机上,请保存程序和数据,然后卸载WAMP5。)
还会看到“DOWNLOAD WampServer 2.0i”超链接(如图1-2所示)。图中WampServer 2.0i安装程序使用的 WEB 服务器为 Apache2.2.11(后面的数字为软件版本号),PHP 预处理器为PHP5.3.0,数据库服务器为MySQL5.1.36。
Apache服务器在启动时,默认会占用80端口号;MySQL服务器在启动时,默认会占用3306端口号。当这两个端口号被占用时,相应的服务器进程则会启动失败。在服务器安装启动之前,建议在命令提示符窗口中输入“netstat-aon”命令,查看是否有进程占用了80和3306端口号。如果有,记录下对应进程运行时的PID(进程唯一标识符),然后执行命令“tskill PID”,杀死该进程,释放该进程所占用的端口号,确保 PHP 服务器安装和启动成功。
以笔者主机为例,启动迅雷软件后,该软件默认会占用80端口号,这样有可能导致Apache服务器启动失败,使用下面的步骤即可停止占用80端口号的迅雷进程。
(1)选择“开始→运行”命令,打开“运行”窗口。
(2)在“运行”窗口中输入cmd命令,单击“确定”按钮。
(3)在命令提示符窗口中输入命令“netstat -aon”并按“Enter”键,如图1-3所示。
(4)在Local Address列中查找占用80和3306端口号的程序,并记录对应的PID。
(5)由于当前启动的迅雷程序占用了80端口号,其对应的PID值为468,可以在命令提示符窗口中输入命令“tskill 468”杀死该迅雷进程。
(6)在命令提示符窗口中重新输入命令“netstat -aon”,即可看到迅雷进程已经被杀死,为成功启动Apache服务器铺平道路。
1.3.2 服务器安装
下载了 WampServer 安装程序,并进行了服务器安装前的准备工作后,就可以开始服务器的安装和配置了。
(1)双击WampServer2.0i.exe,进入WampServer程序安装欢迎界面,如图1-4所示。
(2)单击“Next”按钮,出现许可条款界面,如图1-5所示。
(3)选中“I accept the agreement”(我同意条款)单选按钮,单击“Next”按钮,出现选择安装安装路径界面,如图 1-6 所示。WAMPServer默认的安装路径是“C:\wamp”,可以单击“Browse…”(浏览)按钮选择安装路径,这里使用默认安装路径。
(4)单击“Next”按钮,出现创建快捷方式选项界面,如图1-7所示,其中第一个复选框负责在快速启动栏中创建快捷方式,第二个复选框负责在桌面上创建快捷方式。
(5)单击“Next”按钮,出现信息确认界面,如图1-8所示。
(6)信息确认无误后,单击“Install”(安装)按钮,安装接近尾声时会提示选择默认的浏览器,如果不确定使用哪款浏览器,单击“打开”按钮就可以了,此时选择的是Windows操作系统默认的IE浏览器,如图1-9所示。
(7)后续操作会提示输入一些 PHP 的邮件参数信息,这里保留默认的内容就可以了,如图1-10所示。单击“Next”按钮将进入完成WAMPServer安装界面,如图1-11所示。
(8)当选中“Launch Wamp Server2 now”复选框时,单击“Finish”按钮后完成所有安装步骤,然后自动启动WampServer所有服务,并且任务栏的系统托盘中增加了WampServer图标。
(9)打开IE浏览器,在地址栏中输入“http://localhost/”或“http://127.0.0.1/”后按“回车”键,若出现如图 1-12 所示界面,说明 PHP 服务器安装并启动成功(图 1-12 所示界面对应的是“C:\wamp\www”目录下的index.php文件)。
localhost是本地服务器主机名,127.0.0.1是本机地址。在Windows操作系统中,它们之间的对应关系定义在“C:\WINDOWS\system32\drivers\etc”目录下的hosts文件中。读者可以自定义127.0.0.1为其他主机名(例如www.news.com),此时在浏览器地址栏中输入“http://www.news.com/”同样可以看到图1-12所示界面。
1.3.3 PHP服务器启动与停止
PHP服务器包括Apache服务器和MySQL服务器,读者可以选择“手动启动PHP服务”或“操作系统自动启动PHP服务”两种方法启动PHP服务器。
方法1 手动启动、停止PHP服务器
单击任务栏的系统托盘中的WampServer图标,弹出如图1-13所示界面用于管理WampServer服务器。
单击“Start All Services”选项,则启动 Apache 服务和MySQL服务。
单击“Stop All Services”选项,则停止 Apache 服务和MySQL服务。
单击“Restart All Services”选项,则重启Apache服务和MySQL服务。
也可分别对Apache和MySQL服务进行启动、停止操作。以管理Apache服务器为例,在图1-13中单击“Apache”选项,将弹出如图1-14所示界面。在图1-14界面中可以选择Start(启动)、Stop(停止)和Restart(重新启动)Apache服务。
方法2 操作系统自动启动PHP服务
步骤1 通过“开始→设置→控制面板”方式打开控制面板。
步骤2 通过“管理工具→服务”方式查看系统所有服务。
步骤3 在服务中找到wampmysqld和wampapache服务,这两个服务分别代表MySQL服务和Apache服务。双击某种服务,将“启动类型”由“手动”改为“自动”,单击“确定”按钮即可设置该服务为自动启动,如图1-15所示。
1.3.4 第一个PHP程序
PHP服务器安装并成功后,就可以开始PHP编程之旅了。以helloworld.php程序的编写和运行为例,该程序的开发步骤如下。
(1)在“C:\wamp\www”目录下新建一个名字为“1”的目录,并在该目录下新建一个文本文档(扩展名为txt),然后将该文件名称从“新建文本文档.txt”修改为“helloworld.php”。
(2)以记事本方式打开“helloworld.php”文件,然后输入1.1.3节中的helloworld.php代码。
(3)保存“helloworld.php”文件内容后,启动PHP服务器。
(4)打开 IE 浏览器,在地址栏中输入地址“http://localhost/1/helloworld.php”后按“回车”键。如果看到如图1-16所示的页面,则第一个PHP程序编写、运行成功。
为保证PHP程序文件的扩展名确实为php,不能隐藏已知文件类型的扩展名,显示文件扩展名的方法可参考如下步骤。
1.单击“工具”→“文件夹选项”(如图1-17所示),弹出“文件夹选项”对话框(如图1-18所示)。
2.在“文件夹选项”对话框中选择“查看”选项卡,取消复选框的选中状态,然后单击“确定”按钮即可完成显示文件名的扩展名设置。
1.3.5 PHP服务器配置
细心的读者不难发现,当刷新图1-16页面时,显示的时间会实时更新,但页面显示时间与当前主机实际时间相差8小时。为了保证两个时间的一致性,还需要对PHP服务器进行相应的配置,其中包括PHP预处理器的配置、Apache的配置和MySQL的配置。
1.设置允许外网访问Apache服务
WampServer安装完毕并成功启动Apache服务器后,默认情况是禁止外网访问Apache服务的,如果希望对外开放Apache服务,需要进行如下几个步骤的设置。
(1)单击图1-13中的“Put Online”选项。
(2)单击系统托盘WampServer图标,选择“Apache→httpd.conf”,打开httpd.conf配置文件。
(3)在httpd.conf配置文件中查找关键字“Deny from all”,在第一处“Deny from all”下手动输入“Allow from all”,保存httpd.conf配置文件,如图1-19所示。
(4)修改 httpd.conf 配置文件后,必须重新启动Apache服务,新httpd.conf配置文件才能生效。此后其他主机便可使用 Apache 服务器所在的主机IP地址远程访问该Apache服务。
2.修改Apache服务端口号
WampServer 安装完毕后,使用浏览器访问Apache 服务时,默认使用 80 端口号,在浏览器地址栏中输入“http://localhost/”或“http://localhost:80/”时,访问的是同一个页面。可以通过如下步骤修改Apache服务的端口号。
(1)使用同样的方法在httpd.conf配置文件中查找关键字“Listen 80”。
(2)将80修改为别的端口号(例如8080),保存httpd.conf配置文件。
(3)重新启动Apache服务器,使新配置文件生效。此后访问Apache服务时,必须在浏览器地址栏中加入Apache服务的端口号(例如http://localhost:8080/)。
3.设置起始页
Apache服务器允许用户自定义起始页及其优先级,步骤如下。
(1)使用同样的方法在httpd.conf配置文件中查找关键字“DirectoryIndex”,如图1-20所示。
(2)在DirectoryIndex关键字的后面设置起始页的文件名及其优先级(名称之间用空格隔开,优先级从左到右依次递减)。从图1-20中可以看出,WampServer安装完毕后,默认的网站起始页为index.php、index.php3、index.html、index.htm。因此在浏览器地址栏中输入“http://localhost/”时,Apache服务先去查找访问“c:/wamp/www/”目录下的index.php文件;若该文件不存在,则依次查找访问index.php3、index.html、index.htm文件。
4.设置Apache服务器主目录
使用浏览器访问本地 Apache 服务器时,默认情况下浏览器访问的是“c:/wamp/www/”目录下的页面文件,此时“c:/wamp/www/”目录称为 Apache 服务器主目录。当在浏览器地址栏中输入“http://localhost/1/helloworld.php”时,访问的是“c:/wamp/www/”目录下目录“1”中的helloworld.php程序文件。用户可以自定义Apache服务器主目录,步骤如下。
(1)使用同样的方法在httpd.conf配置文件中查找关键字 “DocumentRoot”,如图1-21所示(从图1-21中可以看出Apache服务器主目录默认为“c:/wamp/www/”目录)。
(2)修改httpd.conf配置文件,例如设置目录“c:/wamp/www/1/”为Apache服务器主目录,如图1-22所示。
( 3 )重新启动 Apache 服务器,使得新配置文件生效。此后在浏览器地址栏中直接输入“http://localhost/helloworld.php”时, Apache 服务器将访问主目录“c:/wamp/www/1/”下的helloworld.php程序。
5.设置虚拟目录
由于一个Apache服务器只能设置一个主目录,为了实现在一台主机上能够同时存在多个“主目录”,需要不断地修改DocumentRoot路径、重启Apache服务,给Apache服务的维护带来了相当大的麻烦。解决该问题的办法就是设置虚拟目录,具体步骤如下。
(1)在系统托盘中单击WampServer图标,选择“Apache→Alias directoris→Add an alias”,弹出命令行窗口。
(2)在冒号后边输入虚拟目录名称(例如chapterone),如图1-23所示。
(3)按“回车”键后输入要映射的Windows目录(例如目录“c:/wamp/www/1/”),如图1-24所示。注意,若“c:/wamp/www/1/”目录不存在,将提示“This directory doesn’t exist.”信息,因此在创建虚拟目录时,首先创建要映射的Windows目录。
(4)按“回车”键后创建Apache虚拟目录成功,再次按“回车”键退出创建虚拟目录对话框。
Apache虚拟目录创建成功后,将在目录“C:\wamp\alias”下创建对应的CONF文件,可以以记事本方式打开对应的CONF文件编辑相应的虚拟目录(不建议初学者这样做)。
(5)虚拟目录创建成功后,WampServer会自动重启所有服务,使新配置生效。此后可以在浏览器地址栏中输入“http://localhost/chapterone/helloworld.php”访问“c:/wamp/www/1/”目录下的helloworld.php程序。
有经验的读者也可以直接打开目录“C:\wamp\bin\apache\Apache2.2.11\conf”下的 Apache 配置文件httpd.conf,修改该文件的其他选项配置Apache的其他服务(初学者不建议这样做)。
6.PHP时区设置
PHP预处理器默认使用格林威治时间GMT,这样就产生一个问题:调用时间函数(例如date())产生的时间与实际时间相差8小时(中国的时间是GMT+8),通过如下步骤设置PHP时区,可以产生正确的时间。
(1)单击系统托盘WampServer图标,选择“PHP→php.ini”,打开php.ini文件。
(2)在php.ini文件中查找关键字“date.timezone”。
(3)将PHP时区配置为:date.timezone = PRC,如图1-25所示。
(4)重新启动服务器,使得服务器配置生效。再次访问 helloworld.php 程序时,将在页面上显示Apache服务器当前的主机时间。
7.PHP预处理器其他常用配置
php.ini文件是PHP的初始化配置文件,所在目录是“C:\wamp\bin\php\php5.3.0”。PHP 预处理器启动时自动读取该配置文件到服务器内存,从而实现PHP 某些初始运行状态的设置。下面介绍几个常用的配置选项。
short_open_tag = On:表示允许使用“<?”和“?>”作为PHP的开始标记和结束标记。
output_buffering = On:表示允许使用页面缓存。
display_errors = On:表示打开错误提示,在调试程序时经常使用。
WAMPServer同时提供了图形化界面配置php.ini文件。单击系统托盘WampServer图标,选择菜单中的“PHP→PHP settings”或“PHP→PHP extensions”,依次单击对应的配置启用或关闭php.ini配置文件对应的选项。修改了配置选项后,WAMPServer会自动重启Apache服务。
8.为MySQL数据库服务器root账户设置密码
在 MySQL 数据库服务器中,用户名为 root 的账户具有数据库管理的最高操作权限。WampServer成功安装后,MySQL数据库服务器的root账户密码默认为空字符串,为数据安全埋下了隐患。phpMyAdmin是一个用PHP编写的,通过浏览器实现以图形界面的方式操作MySQL服务器的管理工具,用phpMyAdmin重新设置root账户密码的方法简单易学。
(1)单击任务栏的系统托盘WampServer图标,选择“phpMyAdmin”打开phpMyAdmin主页面。
(2)在 phpMyAdmin 主页面的菜单中单击“Privileges”(权限)超链接,在“用户一览”可以看到root账户,单击root账户一行的EditPrivileges(编辑权限)超链接(如图1-26所示),将弹出新的编辑页面。
(3)在新编辑页面中找到如图1-27所示的内容,输入新密码(例如root)及确认密码(例如root),也可以单击“Generate”(生成)按钮自动生成随机密码。
(4)单击“Go”按钮即可完成root账户密码的设置。
MySQL 服务器 root 账户密码修改后,phpMyAdmin 应用程序将继续使用用户名为root,密码为空字符串的账户信息登录MySQL服务器,这样会导致数据库登录失败。需要修改 phpMyAdmin配置文件中的数据库连接字符串,重新设置密码后,phpMyAdmin才能连接MySQL服务器。
(5)在“C:\wamp\apps\phpmyadmin3.2.0.1”目录中查找config.inc.php文件。
(6)用记事本方式打开 config.inc.php 文件,找到如图 1-28 所示的代码部分。图 1-28 说明phpMyAdmin使用账户名为root,密码为空字符串的账户信息登录MySQL数据库服务器。
(7)将 root 账户的密码修改为新密码(例如 root),保存修改结果后,就可以继续使用phpMyAdmin操作管理MySQL服务器了。