目前 PHP5 发布了第三个候选版本,估计正式版本不久就快释放了。安装过程应该不会有所变化,下面文章内容将讲述 Windows2000/XP/2003(不建议在 windows 98 下建立 PHP 环境) 下 PHP 环境的配置,服务器选择 Apache
2.0.49
,数据库选择 MySQL 4.0.20 版本。
需要下载几个软件包:
1. PHP5 RC3
2. Apache
2.0.49
3. MySQL 4.0.20
下载软件包
1. PHP5 RC3
PHP 的下载地址为: http://www.php.net/downloads.php ,找到如下图位置,下载方框中的两个软件包。其中 PHP 5.0.0RC3 zip package 就是 PHP5 软件包,而 Collection of PECL modules for PHP 5.0.0RC3 则是 PHP5 的 PECL 扩展模块集合包。 下载完成后放于 C 盘备用。
2. Apache 2.0.49
3. MySQL 4.0.20
下载软件包
1. PHP5 RC3
PHP 的下载地址为: http://www.php.net/downloads.php ,找到如下图位置,下载方框中的两个软件包。其中 PHP 5.0.0RC3 zip package 就是 PHP5 软件包,而 Collection of PECL modules for PHP 5.0.0RC3 则是 PHP5 的 PECL 扩展模块集合包。 下载完成后放于 C 盘备用。
2. Apache
2.0.49
Apache官方下载地址为: http://httpd.apache.org/download.cgi ,找到如下图位置,下载 For Windows 的 MSI 安装包,保存于 C 盘备用。
3. MySQL
4.0.20
MySQL 官方下载地址为: http://dev.mysql.com/downloads/mysql/4.0.html ,找到 Windows downloads 部分,下载 Without installer 包并保存于 C 盘,如下图所示:
安装 PHP5
假设你的系统安装于 C 盘,否则下列目录均须改成相应的盘的目录。
将下载来的 PHP5 RC3(php-
5.0.0
RC3-Win32.zip) 解压缩到 C:/PHP5/ 目录下。将 PECL 扩展模块集合包里的所有文件解压缩到 C:/PHP5/ext/ 目录下。
复制 C:/PHP5/ 目录下的 php5ts.dll 文件到 C:/windows/(如果是 windows 2000 操作系统,则为 C:/WINNT/ 目录,下同,不再重复说明) 目录下。
复制 C:/PHP5/ 目录下的下列 dll 文件于 C:/windows/system32/ 目录下:
fdftk.dll |
其中 libmysql.dll 为 MySQL 4.1 之前版本的扩展支持,libmysqli.dll 为 MySQL 4.1 之后版本的扩展支持。因为我上面下载的是 MySQL
4.0.20
,所以其实复制 libmysql.dll 即可。
复制 C:/PHP5/ 目录下的 php.ini-dist 文件到 C:/windows/ 目录下,并改名为 php.ini ,并用记事本打开编辑:
定位到下面两行:
; Directory in which the loadable extensions (modules) reside. |
修改下面一行使它指向 C:/PHP5/ext/ 目录,修改后如下:
; Directory in which the loadable extensions (modules) reside. |
定位到下面两行:
;Windows Extensions |
可以看到下面列出了所有可支持扩展,我们可以去掉前面的分号来使 PHP 支持相应的扩展。我测试了下,支持下列扩展,也可以根据选择是否配置。
extension=php_bz2.dll |
保存文件并退出。
安装 Apache
2.0.49
准备好下载下来的apache_2.x.x-win32-x86-no_ssl.msi 。双击后开始安装。一步 Next 下来,同意许可协议后会有填写服务器信息的页面,本地调试,前面两个输入 localhost 即可。如下:
一路 Next 下来,均按照默认路径安装――当然你也可以选择你自己需要的路径。Apache 会自动安装并启动相关服务。并在任务栏右下角运行着一个 Apache 监控器:
我们可以从这个监控器来重起、停止、启动 Apache 服务。双击小图标打开控制界面:
接下来对 Apache 的配置文件进行配置,用记事本打开 C:/Program Files/Apache Group/Apache2/conf/ (我这里是按照默认安装路径安装,后面的设置按照自己的安装路径做相应的改变) 目录下的 httpd.conf 文件,定位到下面这行:
DirectoryIndex index.html index.html.var |
在其后面添加一个 PHP 默认页,通常是 index.php ,如下:
DirectoryIndex index.html index.html.var index.php |
为了使 Apache 识别 PHP 的相关扩展名,搜索并定位到下面这个部分:
<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin"> |
在后面添加如下两行:
AddType application/x-httpd-php .php .phtml .php3 .php4 |
指定 php 模块,找到并定位到如下这行:
#LoadModule ssl_module modules/mod_ssl.so |
在下面添加一行:
LoadModule php4_module c:/php5/php5apache2.dll |
使它指向 PHP5 目录下的 php5apache2.dll 文件,路径一定要准确。
为了指定 Apache 识别中文,我们指定 GB2312 为默认编码。应该找到并定位到下面这行
AddDefaultCharset ISO-8859-1 |
将其修改为:
AddDefaultCharset GB2312 |
另外,如果要禁止目录浏览,查找并定位到下面这几行:
<Directory "C:/Program Files/Apache Group/Apache2/htdocs"> |
去掉几行注释下面进跟着的一行的 Indexes 即可,修改后:
<Directory "C:/Program Files/Apache Group/Apache2/htdocs"> |
OK,保存 httpd.conf 文件后重起 Apache 服务器。
安装MySQL
4.0.20
将 mysql-4.0.20-win-noinstall.zip 文件夹压缩到 C 盘根目录下(注意:使用该版本 MySQL 必须将解压缩后文件夹放于 C 盘根目录下),解压缩后可以在 C 盘根目录下找到名为 mysql-x.x.x 的文件夹。将其改名为 mysql 。
进入 bin 目录,找到 winmysqladmin.exe 文件,打开它。第一次运行会提示输入一个新的用户名和密码。这里可以随意选择你需要的用户名和密码输入,作为 my.ini 的默认用户名和密码。如下图:
点击 OK 确定后,WinMySQLadmin 将缩小到右下角的任务栏里:
我们来看看 MySQL 服务是否启动。打开“控制面板”,进入后打开“管理工具”,再打开“服务”。如果一切顺利的话我们会看到 MySQL 已启动的信息,如下图:
到这里 MySQL 的安装告一段落,非常简单。
测试 PHP 是否配置成功:
打开记事本,输入如下这行代码:
<?php phpinfo(); ?> |
保存为 phpinfo.php 文件,存放于 Apache2/htdocs/ 目录下,记得保存的时候选择保存类型为“所有文件”,如下图:
好了,打开浏览器,在地址栏中输入: http://localhost/phpinfo.php 并回车,如果一切顺利的话你将看到下面这个页面,到此 PHP5 的配置大功告成:
注:本文未从安全性和性能上来讨论服务器的配置,相应的安全配置请参考其他手册,本文仅简单介绍了 PHP5 环境的配置,作为学习 PHP5 的前提,本文并不能作为服务器配置文章来阅读,比如,这里没有设置 MySQL 的 root 用户密码,将导致很大的安全隐患,所以请读者自行设置。
作者简介
深空(shenkong),就读西安电子科技大学电子信息工程,钟情 PHP。个人主页:www.openphp.cn,联系信箱:kim@openphp.cn |
[ 点击此处收藏本文]
这个我的机子上不行
"
Syntax error on line 173 of D:/Program Files/Apache Group/Apache2/conf/httpd.con
f:
Can't locate API module structure `php4_module' in file C:/php5/php5apache2.dll:
No error
Note the errors or messages above, and press the <ESC> key to exit. 24...
"
要怎么设置呢?
用的是xp + apache_2.0.50 + php5 final
修改成
LoadModule php5_module c:/php5/php5apache2.dll
ServerAdmin takes one argument,this email address of the server administrator Note the error......
XP+apache_2.0.50-win32-x86-no_ssl+mysql-5.0.0a-alpha-win
这样配完之后,apache无法启动了,配了几次仍然不行。怪。
apache装到c:/apache/apache2下
是在apache中加入
LoadModule php4_module c:/php5/php5apache2.dll
时出了错
php startup:unable to load dynamic library'c:/php/extensions/php_iconv.dll'-找不到指定的模块。
php startup:unable to load dynamic library'c:/php/extensions/php_w32api.dll'-找不到指定的模块。
php startup:unable to load dynamic library'c:/php/extensions/php_xslt.dll'-找不到指定的模块。
php startup:unable to load dynamic library'c:/php/extensions/php_yaz.dll'-找不到指定的模块。
php startup:unable to load dynamic library'c:/php/extensions/php_mysql.dll'-找不到指定的模块。
.
....
就可以启动了。不知道会不会有影响。
注:把c:/php/ext 改为c:/php/extensions
现在是可以看到测试页面了。
提示:
php startup:unable to load dynamic library'c:/php/ext/php_curl.dll'-找不到指定的模块。
php startup:unable to load dynamic library'c:/php/ext/php_ldap.dll'-找不到指定的模块。
php startup:unable to load dynamic library'c:/php/ext/php_openssl.dll'-找不到指定的模块。
但是apache可以启动,看到测试页面了
请问这个出错到底是怎么回事?
明明存在c:/php/ext/php_curl.dll这几个模块阿~~~为什么它说找不到?这个出错提示有影响吗?
谢谢!
可是当我在浏览器中输入http://localhost/phpinfo.php时
却出现了一个提示我保存的对话框,我看不到你说的一个页面
望指教,谢谢
能给你e-mail 联系吗??
可是当我在浏览器中输入http://localhost/phpinfo.php时
却出现了一个提示我保存的对话框,我看不到你说的一个页面
望指教,谢谢
回复:
那就是说你的php还没有安装成功。
本人用的软件是
apache-2.0.50-win32-x86-no_ssl.exe
php5-win32-latest
phpmyadmin 2.6.0-beta2
mysql-5.0.1-alpha-snapshost-win
关于打开 http://localhost/phpinfo.php 出现保存界面是因为
没有在httpd文件中加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
LoadModule php5_module "c:/php5/php5apache2.dll"
这个问题就可以解决了。绝对没有问题的。
还会有问题就接着问吧。
document root
把后面的路径改为你的网页存放的路径就可以了。显示为你的网页的界面.
LoadModule php4_module c:/php5/php5apache2.dll
修改成
LoadModule php5_module c:/php5/php5apache2.dll
是什么原因呢
可是当我在浏览器中输入http://localhost/phpinfo.php时
却出现了一个提示我保存的对话框,我也看不到你说的一个页面 ,这个根据以上几位说的我还是不懂,能不能教教我
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
请教高手指点是什么地方没有配好
<?
################
# Calendar.php - 创建一个当天日期为高亮度的日历GIF图片。
# 使用到了GD 函数库存和TTF字体 -可以被改变成 PNG格式的图片, 当然,如果
# 你想要的是一个拥有一个透明背景的图片除外,这个改动是可以被很容易得
# 完成,最后,我们把图片写到一个叫 dategif/ 的目录,并且用当天的日期来
# 命名该图片的名字。(如:20000204.gif)这个GIF图片一般情况只会有5K或
# 是7K的大小。
#
# 这段程序你可以以任意地方使用,该文档或支持对每个人都是免费的,但是请
# 不要把该程序用于买卖,你可以剪切、拷贝或是毁坏这段程序,只要你喜欢,
# 并且,你不用为了用它而给我付费!如果你需要帮助或是你真的很喜欢这段程
# 序,请给我来封信,以让我知道,你看好吗?
# 二月四日4, 2000 由 Matt Florell ( mattf@mail.com )
################
Header( "Content-type: image/gif");
#创建一幅图片
$im = ImageCreate(156, 142);
# 设置颜色
$black = ImageColorAllocate($im, 50, 50, 50);
$white = ImageColorAllocate($im, 255, 255, 255);
$orange = ImageColorAllocate($im, 255, 200, 0);
$yellow = ImageColorAllocate($im, 255, 255, 0);
$tan = ImageColorAllocate($im, 255, 255, 190);
$grey = ImageColorAllocate($im, 205, 205, 205);
$dkgrey = ImageColorAllocate($im, 140, 140, 140);
###灰线 ###
#边框线
ImageRectangle($im, 1, 1, 155, 141, $dkgrey);
#水平线
ImageRectangle($im, 1, 22, 155, 39, $dkgrey);
ImageRectangle($im, 1, 56, 155, 73, $dkgrey);
ImageRectangle($im, 1, 90, 155, 107, $dkgrey);
ImageRectangle($im, 1, 107, 155, 124, $dkgrey);
#垂直线
ImageRectangle($im, 23, 22, 45, 141, $dkgrey);
ImageRectangle($im, 67, 22, 89, 141, $dkgrey);
ImageRectangle($im, 111, 22, 133, 141, $dkgrey);
### 白线 ###
#外框线
ImageRectangle($im, 0, 0, 154, 140, $white);
#水平线
ImageRectangle($im, 0, 21, 154, 38, $white);
ImageRectangle($im, 0, 55, 154, 72, $white);
ImageRectangle($im, 0, 89, 154, 106, $white);
ImageRectangle($im, 0, 106, 154, 123, $white);
#垂直线
ImageRectangle($im, 22, 21, 44, 140, $white);
ImageRectangle($im, 66, 21, 88, 140, $white);
ImageRectangle($im, 110, 21, 132, 140, $white);
### 在上面写数字
$today = date( "d");
$month = date( "m");
$year = date( "Y");
$datecode = date( "Ymd");
$gif = '.gif';
$first=mktime(0,0,0,$month,1,$year);
$mon_yr=date( "F Y", $first);
$wd=date( "w",$first);
#if ($wd==0) { $wd=7;}
$lastday=date( "d",mktime(0,0,0,$month+1,0,$year));
$cur=-$wd+0;
$ver_position = 50;
for ($k=0;$k<6;$k++) {
$day_position = 5;
$last_row_used = 0;
for ($i=0;$i<7;$i++ ) {
$cur++;
$sing_add = 0;
if (($cur<=0) || ($cur>$lastday) ) $day_position = ($day_position + 22);
else
{
$day_color = $grey;
if ($day_position<10) $day_color = $tan;
if ($cur==$today) $day_color = $yellow;
if (strlen($cur)<2) {$sing_add = 4;}
$fin_position = ($day_position + $sing_add);
ImageTTFText($im, 12, 0, $fin_position, $ver_position, $day_color, "./fonts/arialbd.ttf", "$cur");
$day_position = ($day_position + 22);
$last_row_used = 1;
}
}
$day_position = 5;
if ($last_row_used) $ver_position = ($ver_position + 17);
}
# 月份和年份 (Arial字体、加粗、居中)
$spc = 23;
$st_add = 0;
$st = "$mon_yr";
$st_len = strlen($st);
$st_margin = (14 - $st_len);
if ($st_margin > 0) {$st_add = ($st_margin * 4);}
$spc = ($spc + $st_add);
ImageTTFText($im, 14, 0, $spc, 15, $white, "./fonts/arialbd.ttf", "$st");
# 星期的名字
ImageString($im, 2, 3, 23, "Sun", $orange);
ImageString($im, 2, 25, 23, "Mon", $orange);
ImageString($im, 2, 47, 23, "Tue", $orange);
ImageString($im, 2, 69, 23, "Wed", $orange);
ImageString($im, 2, 91, 23, "Thu", $orange);
ImageString($im, 2, 113, 23, "Fri", $orange);
ImageString($im, 2, 135, 23, "Sat", $orange);
if ($ver_position<140)
{
$im_out = ImageCreate(156, 125);
$out_black = ImageColorAllocate($im_out, 50, 50, 50);
ImageRectangle($im, 1, 124, 155, 124, $dkgrey);
ImageCopyResized($im_out, $im, 0, 0, 0, 0, 156, 125, 156, 125);
ImageColorTransparent($im_out, $out_black);
ImageGIF($im_out, "./dategif/$datecode$gif");
ImageGIF($im_out);
ImageDestroy($im);
ImageDestroy($im_out);
}
else
{
ImageColorTransparent($im, $black);
ImageGif($im, "./dategif/$datecode$gif");
ImageGif($im);
ImageDestroy($im);
}
?>