Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18931210
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-04-13 22:09:32

原文地址:http://blog.csdn.net/husn/archive/2005/05/04/371901.aspx

2.1 环境需求与准备工作
在安装PHP做为WWW服务器的一部份时,可以考虑用UNIX系统,或者是 Windows NT/95 等
Win32 API 的平台。当然,在实际应用中大部份的人都会使用 UNIX 来当作 PHP 的执行平台 (在 Windows NT 的使用者大多数都会选择 IIS + ASP),但在学习中使用Windows平台是非常方便的。实际上,Linux + Apache + PHP是最经济的选择,因为这样的组合几乎是不用钱的,成本与效益之比几乎为零。而许多成功网站的经验,更是采用这种
组合最好的典范。
Linux系统方面,用户可以随便选择自己喜爱的Linux套件,包括 Slackware Linux、RedHat、OpenLinux、SuSE等等,因为这方面的软件使用上很容易而且很便宜就可以买到。
对学生而言,也可以去各大 FTP 站下载完整的系统安装。
Apache 服务器则是目前最多 WWW 网站所采用服务器。用户可以到 下载最新版的程序及相关文件,若觉得从国外下载太慢的话,也可以到它的镜像站点去下载。
PHP 则可以去它的官方网站 下载所需要的程序。
虽然目前 WindowsNT 或者 Windows98 等 Win32 的作业平台也能安装 PHP 及 Apache 服务器,不过这似乎没什么优势,因为PHP和Apache在UNIX下可以跑得更快更好。
当然,若想使用商业化的平台,SUN、IBM、HP、DEC、SGI、NEC 等公司都有提供相关的UNIX 或者是 Windows NT 平台。加上高安全性调整过后的 Apache 服务器Stronghold
或是其它支持 SSL 的 Apache 版本,这种组合相信能满足商业化的需求。而 PHP 就扮演着快速方便的 CGI 角色,让客户对站点的服务品质更加满意
本章将指导PHP的整个安装配置过程。用户需要具备以下知识和软件:(注:此处是指在UNIX下安装)
l 基本的UNIX技能 (会操作"make"程序和一种 C 编译器)
l ANSI C 编译器
l 一个 Web Server (显然)
2.2 在UNIX下安装PHP
下载源码,最新版的源码可以从网站下载。
2.2.1 快速设置及安装
以下是基本的安装动作,环境是UNIX系列的平台。在安装之前,要先下载 apache_1.3.x.tar.gz 及 php-3.0.x.tar.gz 二个文件。可以将这二个文件放在 /usr/src 中再开始执行以下的动作。而下面每个行号后的动作都是整串字连在一起的,这可以避免分行而造成误会。
l gzip -d -c apache_1.3.x.tar.gz | tar xvf -
l gzip -d -c php-3.0.x.tar.gz | tar xvf -
l cd apache_1.3.x
l ./configure --prefix=/www
l cd ../php-3.0.x
l ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars

 

l make
l make install
l cd ../apache_1.3.x
l ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
l make
l make install
第一、二行利用 gzip 及 tar 加上管道功能,将压缩文件解压还原。然后在 Apache 的原始文件目录中执行环境设置,--prefix 选项指示 Apache 的安装目录路径。之后进入
PHP3 的原始文件目录中,若没有 MySQL 数据库,则可省略 --with-mysql 的选项,重要的是一定要加入 --with-apache 选项,而且 Apache 原始文件的路径要正确。设置完PHP3 之后就编译、安装到 Apache 的原始文件目录中。之后在 Apache 原始文件目录中再加入 PHP 的模块文件。在编译及安装 Apache 之后就初步完成了。之后就是要设置 Apache 才能让 Web Server 顺利运作。
值得注意的是,PHP要和任何数据库连接,都要在执行这些动作之前先将数据库设好,并确定 Web Server 上可以顺利存取数据库系统。若有需要其它的一些 PHP 外部模块也要先设置好这些模块。
l cd ../php-3.0.x
l cp php3.ini-dist /usr/local/lib/php3.ini
之后将 php3.ini 放在指定的目录,若有需要,也可以手动修改php3.ini 文件,以符合使用的要求。
在 Apache 服务器的设置方面,要在 Apache 的设置文件 httpd.conf 或 srm.conf 文件中加入下面的字串。告诉 Apache 服务器,扩展名php3 是一个特殊的程序文件。当然扩展名可以设成别的扩展名,还有一些站点将 php 的程序扩展名设为 phtml 也是不错的选择,这就要看 Webmaster 的规划了。
l AddType application/x-httpd-php3 .php3
在 PHP 4.x 版的方法大致和 PHP 3.0.x 版相同,不同的地方在于 PHP 4.x 的目录名称及编译后的模块放置目录不同。此外,内定的扩展名也由 .php3 变成了 .php。当然在安装前还是要先下载 PHP 4.x 的程序才行。
l gzip -dc apache_1.3.x.tar.gz | tar xvf -
l gzip -dc php-4.0.x.tar.gz | tar xvf -
l cd apache_1.3.x
l ./configure --prefix=/www
l cd ../php-4.0.x
l ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars

l make
l make install
l cd ../apache_1.3.x
l ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
l make
l make install
l cd ../php-4.0.x
l cp php.ini-dist /usr/local/lib/php.ini
l 在 httpd.conf 或 srm.conf 加入
l AddType application/x-httpd-php .php
l AddType application/x-httpd-php-source .phps
而 PHP 4.x 版中对 Apache 服务器加入了新的环境变量设置项。
l php_value [PHP directive name] [value]
l php_flag [PHP directive name] [On|Off]
l php_admin_value [PHP directive name] [value]
l php_admin_flag [PHP directive name] [On|Off]
在 PHP 3.0.x 版中,有些目录可能会有 .htaccess 的文件,使用 PHP 4.0.x 版的系统,必须将这个文件拿掉,可以使用改名字的方式或者直接删除。
当一切设置好了之后,重新启动Apache 服务器。在 Apache 目录下有 bin 或是 sbin 的目录,其中会有 apachectl 的 shell 程序,输入 apachectl restart 就可以重新启动 Apache 服务器了。赶快试看看 hello, world 程序吧!
2.2.2 配置
有两种方法配置PHP3。
1. 使用PHP3自带的"setup"程序
这个程序会问你一系列的问题(类似于PHP/FI 2.0的"install"程序 ), 最后执行"configure"程序。键入 ./setup 执行此程序 。
这个程序会建立一个叫"do-conf"的文件,这个文件包含了传送到配置中的选项。 你可以编辑它,更改其中一些选项,然后键入 ./do-conf 来配置新的选项,而不需要重新运行"setup"。
2. 手工配置
键入 ./configure --help 来查看配置的可选项。
下面详细列出了一些不同的选项。
l Apache 模块
要将PHP3建立为一个Apache的模块,请在问到"Build as an Apache module?" (用选项--with-apache=DIR 来配置) 时回答 "yes ",并且提供Apache所在的目录。例如你将Apache解压到 /usr/local/www/apache_1.2.4,那么这就是你的Apache 所在的目录。默
认的目录是 /usr/local/etc/httpd.l fhttpd 模块
要将PHP3建立为一个fhttpd的模块,请在问到"Build as an fhttpd module?" (用选项--with-fhttpd=DIR 来配置)时回答 "yes ",并且提供fhttpd所在的目录。默认的目录是 /usr/local/src/fhttpd。如果你使用 fhttpd, 把PHP3建立为一个fhttpd的模块将提供良好的性能,更容易控制和远端执行的能力。
l CGI 版本
默认设置是将PHP3安装成一个CGI程序。如果你使用可将PHP3作为模块的web server,建议你将它作为模块安装,这将获得更好的性能,CGI版本允许Apache的不同用户使用不同
方式来运行含有PHP3程序的网页。
l 数据库支持的选项
PHP3支持大量native数据库(和ODBC一样)。
l Adabas D
--with-adabas=DIR
支持Adabas D的编译。该参数给出Adabas D的安装目录,其默认目录是 /usr/local/ad
abasd.
l dBase
--with-dbase
允许绑定的DBase数据库的支持,不需要额外的库。
l filePro
--with-filepro
允许绑定的只读的filePro的支持,不需要额外的库。
l mSQL
--with-msql=DIR
允许mSQL的支持,该参数指明了mSQL的安装目录,默认目录是 /usr/local/Hughes 。这
是mSQL 2.0的默认目录。configure 程序会自动检测你的mSQL的版本,PHP3支持1.0 和
2.0版,但是如果将PHP3和mSQL 1.0一同编译则它只能存取mSQL 1.0的数据库。
l MySQL
--with-mysql=DIR
允许MySQL的支持,该参数指明了MySQL的安装目录,默认目录是 /usr/local。
l iODBC
--with-iodbc=DIR
允许iODBC的支持,该参数指明了iODBC的安装目录,默认目录是 /usr/local。iODBC是
著名的运行于UNIX系统下的可自由分发的ODBC管理器。
l OpenLink ODBC
--with-openlink=DIR
允许OpenLink的支持,该参数指明了OpenLink的安装目录,默认目录是 /usr/local/op
enlink.
l Oracle
--with-oracle=DIR
允许Oracle的支持。经测试PHP至少和Oracle 7.0到7.3的各个版本能良好协作。该参数
指明了ORACLE_HOME的目录。如果你已经建立起了Oracle的运行环境就不必再指定该参数
了。
l PostgreSQL
--with-pgsql=DIR
允许PostgreSQL的支持,该参数指明了PostgreSQL的安装目录,默认目录是 /usr/loca
l/pgsql.
l Solid
--with-solid=DIR
允许Solid的支持,该参数指明了Solid的安装目录,默认目录是 /usr/local/solid.
l Sybase
--with-sybase=DIR
允许Sybase的支持,该参数指明了Sybase的安装目录,默认目录是 /home/sybase.
l Sybase-CT
--with-sybase-ct=DIR
允许Sybase-CT的支持,该参数指明了Sybase-CT的安装目录,默认目录是 /home/sybas
e.
l Velocis
--with-velocis=DIR
允许Velocis的支持,该参数指明了Velocis的安装目录,默认目录是 /usr/local/ve
locis.
l A custom ODBC library
--with-custom-odbc=DIR
允许用户ODBC的支持,该参数指明了用户ODBC的目录,默认目录是 /usr/local 。这个
选项是指当你运行configure程序时定义了 CUSTOM_ODBC_LIBS 。你还必须有一个可用的
odbc.h的头文件,包含在include路径里。如果没有,则必须建立它并在此包含特定的头
文件。头文件也许还需要一些扩展的定义, 尤其是当它支持多平台的时候。在CFLAGS中
定义。
例如,可以在通过这个办法在QNX中运行Sybase SQL Anywhere: CFLAGS=-DODBC_QNX LD
FLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc" ./configure --with-custom-odb
c=/usr/lib/sqlany50
l 统一的 ODBC
--disable-unified-odbc
取消统一的ODBC的支持,统一的ODBC通常是对于所有的数据库的基于ODBC的接口, 例如
Solid 和 Adabas D,以及普通的ODBC库。iODBC、Solid、Adabas D 和Sybase SQL Any
where 已经通过测试。要使用此选项需要这些模块中的一个(也仅仅是一个)或Velocis模
块是开启的, 或者指定了一个用户ODBC库。这个选项适用于使用了以下任意选项的情况
: --with-iodbc, --with-solid, --with-adabas, --with-velocis, or --with-c
ustom-odbc,
l LDAP
--with-ldap=DIR
允许LDAP的支持,该参数指明了LDAP的安装目录,默认目录是 /usr/local/ldap.
l 其他配置选项
? --enable-maintainer-mode
? --enable-maintainer-mode
开启扩展的倚赖性检查和编译警告(用于部分PHP3开发者)
? --with-system-regex
? --with-system-regex
使用系统的正则表达式库来代替内置的库。如果将PHP3建立为一个服务模块,则当连接
到这个服务器时必须使用建立时的库。要是系统库提供的一些所需要的特殊方面,请将
此项打开。如果可能的话建议采用内置的正则表达式。
? --with-config-file-path
? --with-config-file-path=DIR
用于PHP启动时查找 php3.ini 文件 。
? --with-exec-dir
? --with-exec-dir=DIR
在安全模式中只允许运行DIR目录下的程序。默认目录是 /usr/local/bin 。这是PHP的
默认设置,以后可以按配置文件中安全模式执行目录所讲的方法重新设置。
? --disable-debug
? --disable-debug
不要在库或可执行程序中包含调试信息使用调试信息可以准确的找出bug,所以在PHP3程
序的alpha或beta测试阶段可以打开它。
? --enable-safe-mode
? --enable-safe-mode
默认为允许"safe mode"。这强制限定了PHP能作什么,例如只能打开文档目录下的文件
。要获得更多信息请阅读关于安全的章节 。CGI用户通常允许安全模式。这是默认的选
项,以后可以按配置文件中安全模式所讲的方法重新设置。
? --enable-track-vars
? --enable-track-vars
使PHP3保留GET/POST/cookie变量来源的信息到HTTP_GET_VARS,HTTP_POST_VARS和HTTP
_COOKIE_VARS数组中。这是默认选项,以后可以按配置文件 中 track_vars 所讲的方法
重新设置。
? --enable-magic-quotes
? --enable-magic-quotes
默认为允许magic quotes。以后可以按配置文件 中 magic_quotes_runtime 所讲的方
法重新设置。
? --enable-debugger
? --enable-debugger
允许内部的PHP3调试器支持。本功能尚在实验阶段。参看配置文件 中 Debugger Confi
guration 。
? --enable-discard-path
? --enable-discard-path
如果这一选项开启,PHP程序包可以安全的放在WEB树以外的任何地方,没人能绕过 .ht
access文件规定的安全设置存取它。
? --enable-bcmath
? --enable-bcmath
允许bc类型的任意精度的数学函数
? --enable-force-cgi-redirect
? --enable-force-cgi-redirect
允许内部服务器重定向的安全性检查。如果你在Apache中使用PHP的CGI版本,将要用到
这一选项。
当把PHP作为一个CGI程序来运行时,默认情况下PHP总是首先检查它是否用于重定向执行
(例如在Apache下,使用Action操作)。这样就确保了PHP程序包不能越过标准的web ser
ver认证而直接调用。例如 ,这个直接
调用会忽略任何Apache对于/secret目录的安全性检查,而存取
/doc.html这个文件。
不要关闭这项检查,也不要越过Apache的安全和认证设置。在Web server没有安全重定
向功能时要采用这个选项,否则任何人都可以存取Web server根目录和用户目录下的所
有文件。
? --disable-short-tags
? --disable-short-tags
禁止缩写的PHP3标记--。如果你在XML中使用PHP3,则必须禁止缩写的PHP3标记,
而采用PHP3的完整标记 --。这是默认的设置,可以参考配置文件关于 PHP3缩
写标记的设置。
? --enable-url-includes
? --enable-url-includes
允许PHP3的include()函数直接运行其他HTTP或FTP服务器下的代码。请参考配置文件 中
i包含路径的选项。
? --disable-syntax-hl
? --disable-syntax-hl
关闭语法的高亮度显示。
? CPPFLAGS和LDFLAGS
为了使 PHP3 安装程序在不同的目录下查找头文件和库文件,可以修改各自相应的环境
变量CPPFLAGS和LDFLAGS 。如果你使用智能型的shell, 你可以这样设置 LDFLAGS=-L/
my/lib/dir CPPFLAGS=-I/my/include/dir ./configure 。
? Building
配置了PHP3后,就可以使用 make 命令来建立可执行的CGI程序或PHP3库了。
2.2.3 测试
把PHP3安装成一个CGI程序后,用户就可以通过敲入 make test 来测试安装结果。这是
用户及早发现PHP3在你的平台上运行所存在的问题,避免以后麻烦的一个好办法。
2.2.4 评估
当把PHP3安装成一个CGI程序后,还可以通过敲入 make bench 来评估一下安装结果。注
意:如果在默认的安全模式下,测试程序执行时间超过允许的最长时间(即30秒)还没
结束,它将不能结束。这是因为在安全模式下设置时间限制不可用。用户需要使用最长
执行时间来控制自己的script的执行时间。另外 make bench 会忽略配置文件。
2.2.5 PHP.INI文件
php.ini或php3.ini是PHP在启动时会读取的设置文件。该文件的存放路径为 /usr/loca
l/lib/。在 PHP 3.x 版的设置文件为 php3.ini;而在 PHP 4.x 版改为 php.ini。若
PHP 安装成服务器的模块,则在 Web 服务器启动执行时会读取,之后就不再读取,因此
改动设置的话就要重新启动 Web 服务器。若使用独立 PHP CGI 方式,则每次都读一次

要看目前的系统设置,可以用phpinfo() 看到。以下为选项设置:
? php_value name value
设置变量名称和值。本选项需 PHP 4.x 版之后方可使用。
? php_flag name on|off
设置旗标布尔变量选项。本选项需 PHP 4.x 版之后方可使用。
? php_admin_value name value
设置 Apache 的设置文件变量。原来在 .htaccess 的设置改到这个选项设置。本选项需
PHP 4.x 版之后方可使用。
? php_admin_flag name on|off
设置布尔变量当标志。本选项需 PHP 4.x 版之后方可使用。
? asp_tags boolean
设置 PHP 程序是否剖析以 ASP Script 语法 <% %> 的标记 (tag)。本选项在 PHP 3.0
.4 之后才可使用。
? auto_append_file string
设置本选项可以让指定的文件附加在原PHP程序后面自动执行。若 PHP 程序中有用到 e
xit() 函数,则指定的文件不会执行。参数 string 即为指定自动执行的文件。
? auto_prepend_file string
设置本选项可以让指定的文件在原 PHP 程序之前自动执行。参数 string 即为指定自动
执行的文件。
? cgi_ext string
本选项设置 CGI 程序的扩展名。
? display_errors boolean
本选项设置是否要将执行的错误讯息显示在使用者的浏览器上。
? doc_root string
设置服务器的文件及 PHP 文件放置的根目录。
? engine boolean
本选项需要使用阿帕奇的模块方式使用PHP。可设置是否要使用 PHP 引擎。在 httpd.c
onf 中加入 php3_engine on/off 亦可设置某目录或某虚拟站点是否要用 PHP 解译器。

? error_log string
本选项用来设置错误记录档。在 UNIX 系统上参数 string 即为文件名。Windows NT 会
将记录记在事件检视器的日志之中。Windows 95/98 则不支持系统记录。
? error_reporting integer
本选项用来设置系统记录的等级。参数 integer 即为等级的级数旗标,可以加在一起,
默认值为 7,见下表2-1。
表2-1 级数说明表
等级数 级数说明
1 一般的错误
2 一般的警告
4 剖析错误
8 非关键的警告
? open_basedir string
本选项用来设置提供 PHP 存取的最底层目录。从该指定目录之下的文件或目录,PHP 程
序方可存取。使用本选项主要是为了系统安全性的考量。参数 string 即为欲限制的最
底层目录节点。值得注意的是在 UNIX 系统中,若该节点之下的文件或目录有符号链结
(symbolic link),则可能会让使用本选项的目的打折,因此在目录的设计上考量,也
是 Webmaster 的重要任务。默认值是所有文件均可存取。在 PHP 3.0.7 版之后,可以
设置多个底层目录。
? gpc_order string
设置 GET/POST/COOKIE 三种模块的顺序及规则。参数 string 即为欲设置的规则,例如
:设置成 "GP" 表示忽视 cookie,并在存取方法 (method) 相同时,以 POST 取代 GE
T。
? ignore_user_abort string
默认值为Off。用来设置当传输未完成时,使用者端断线是要继续处理。
? include_path string
为 PHP 程序中 require、include 及 fopen_with_path 等函数的文件搜寻路径。在 U
NIX 或 Windows 中的斜线方向不同。
? log_errors boolean
指定程序错误时是否要记录在 log 文件中。
? magic_quotes_gpc boolean
设置 GET/POST/COOKIE 三种模块的特殊字符,包含单引号、双引号、反斜线、及空字符
(NUL) 是否要自动加入反斜线当溢出字符。
? magic_quotes_runtime boolean
设置传回数据是否自动加入反斜线当溢出字符。
? magic_quotes_sybase boolean
设置 sybase 数据中单引号要自动加上反斜线当溢出字符。
? max_execution_time integer
设置程序最久执行时间。单位是秒。
? memory_limit integer
设置程序最多使用多少内存。
? short_open_tag boolean
设置是否使用短的 PHP标记 ()。若不使用,则必须要用 若要使程序合乎 XML 的标准则要关闭本功能。
? track_errors boolean
打开本选项可使最后的错误讯息跟着全域变量 $php_errormsg。
? track_vars boolean
打开本选项可让使用者输入的字串自动剖析到变量之中,而不用自己处理。
? upload_tmp_dir string
指定上传文件暂存路径。
? user_dir string
指定使用者自家目录的路径。
? warn_plus_overloading boolean
若打开本选项,字串间就只能用英文的句号(.)连结,而不能用加号(+)连结字串。
? SMTP string
在 Windows 系列作业系统中,用来指定 SMTP 服务器,供 mail 函数使用。参数 stri
ng 为 SMTP 服务器名字。
? sendmail_from string
设置 "From: " 字串供 Windows 系列作业系统使用 mail 函数。
? sendmail_path string
设置 sendmail 程序的放置路径。例如 /usr/sbin/sendmail。
? safe_mode boolean
设置 PHP 在安全模式下执行。
? safe_mode_exec_dir string
设置安全模式程序执行的路径。
? debugger.host string
指定远端除错的服务器名称,可以是 IP 或 Domain Name。
? debugger.port string
设置远端除错服务器的埠号 (port)。
? debugger.enabled boolean
设置是否可以为除错模式。
? enable_dl boolean
本选项要使用阿帕奇模块 (Apache module) 的方式才有效。用来设置 PHP 的 dl() 函
数可否作用。当系统处于安全模式 (safe-mode) 时,本选项 enable 也无法使用 dl()
函数。
? extension_dir string
设置动态函数的路径。
? extension string
PHP启动时所要载入的动态扩充功能。
? mysql.allow_persistent boolean
设置是否允许MySQL数据库长期连线(persistent connections),会影响 mysql_pconne
ct() 函数。
? mysql.max_persistent integer
设置每个处理程序最多保持几个 MySQL 长期连线。
? mysql.max_links integer
设置每个处理程序最多开几个MySQL连线,包括长期连线。
? msql.allow_persistent boolean
设置是否允许mSQL 数据库长期连线 (persistent connections),会影响 msql_pconne
ct() 函数。
? msql.max_persistent integer
设置每个处理程序最多保持几个 mSQL 长期连线。
? msql.max_links integer
设置每个处理程序最多开几个 mSQL 连线,包括长期连线。
? pgsql.allow_persistent boolean
设置是否允许 Postgres 数据库长期连线(persistent connections),会影响 pg_pCon
nect() 函数。
? pgsql.max_persistent integer
设置每个处理程序最多保持几个Postgres长期连线。
? pgsql.max_links integer
设置每个处理程序最多开几个 Postgres连线,包括长期连线。
? sybase.allow_persistent boolean
设置是否允许Sybase数据库长期连线(persistent connections),会影响 sybase_pcon
nect() 函数。
? sybase.max_persistent integer
设置每个处理程序最多保持几个 Sybase 长期连线。
? sybase.max_links integer
设置每个处理程序最多开几个 Sybase 连线,包括长期连线。
? sybct.allow_persistent boolean
设置是否允许 Sybase-CT 数据库长期连线 (persistent connections),默认值是开启
的。
? sybct.max_persistent integer
设置每个处理程序最多保持几个 Sybase-CT 长期连线。默认值为 -1 表示无限制。
? sybct.max_links integer
设置每个处理程序最多开几个 Sybase-CT 连线,包括长期连线。默认值为 -1,表示没
有限制。
? sybct.min_server_severity integer
设置 Sybase-CT 服务器错误报告的最少笔数。默认值为 10。
? sybct.min_client_severity integer
设置 Sybase-CT 客户端错误报告的最少笔数。默认值为 10。
? sybct.login_timeout integer
设置 Sybase-CT 最久可以使用的登入时间。默认值为 1 分钟。
? sybct.timeout integer
设置 Sybase-CT 的 query 操作时间限制。默认值为无限制。
? sybct.hostname string
设置 Sybase-CT 可连线机器名称。默认值不设限
? ifx.allow_persistent boolean
设置是否允许 Informix 数据库长期连线 (persistent connections),会影响 ifx_pc
onnect() 函数。
? ifx.max_persistent integer
设置每个处理程序最多保持几个 Informix 长期连线。
? ifx.max_links integer
设置每个处理程序最多开几个 Informix 连线,包括长期连线。
? ifx.default_host string
设置 Informix 默认连接的服务器名称,供 ifx_connect() 或 ifx_pconnect() 函数使
用。
? ifx.default_user string
设置 Informix 默认连接的使用者帐号,供 ifx_connect() 或 ifx_pconnect() 函数使
用。
? ifx.default_password string
设置 Informix 默认连接的使用者密码,供 ifx_connect() 或 ifx_pconnect() 函数使
用。
? ifx.blobinfile boolean
设置 Informix 长位元物件模式,0 表在内存;1 表在文件中。亦可以在 PHP 程序中使
用 ifx_blobinfile_mode() 函数来修改。
? ifx.textasvarchar boolean
设置 Informix 文字模式默认值,0 表传回 blob 的代码;1 表传回 varchar 字串。亦
可在 PHP 程序中使用 ifx_textasvarchar() 函数来修改设置。
? ifx.byteasvarchar boolean
设置 Informix 位元组模式默认值,0 表传回 blob 的代码;1 表传回 varchar 字串。
亦可在 PHP 程序中使用 ifx_byteasvarchar() 来修改设置。
? ifx.charasvarchar boolean
设置 Informix 传回字串的字尾空格是否要自动去除。
? ifx.nullformat boolean
设置 NULL 栏位的传回方式,True 表示传回字串 NULL,False表格传回字串 ""。亦可
在 PHP 程序中以 ifx_nullformat() 修改。
? bcmath.scale integer
设置BC高精确度函数库的小数点位数。
? browscap string
设置浏览器名。
? uodbc.default_db string
设置ODBC默认连接的数据库名称,供 odbc_connect() 或 odbc_pconnect() 函数使用。

? uodbc.default_user string
设置 ODBC 默认连接的使用者帐号,供 odbc_connect() 或 odbc_pconnect() 函数使用

? uodbc.default_pw string
设置 ODBC 默认连接的使用者密码,供 odbc_connect() 或 odbc_pconnect() 函数使用

? uodbc.allow_persistent boolean
设置是否允许 ODBC 数据库长期连线 (persistent connections),会影响 odbc_pconn
ect() 函数。
? uodbc.max_persistent integer
设置每个处理程序最多保持几个 ODBC 长期连线。
? uodbc.max_links integer
设置每个处理程序最多开几个 ODBC 连线,包括长期连线。
以下和 session 有关的设置值,都在 PHP 4.x 以上的版本方支持。在 php.ini 的设置
档中。
? session.save_handler
定义 session 储存资料的文件名称。默认值为 files。
? session.save_path
定义 session 储存资料的文件路径。默认值为 /tmp。
? session.name
设置 session 所使用的 cookie 名称。默认值为 PHPSESSID。
? session.auto_start
设置 session 是否自动开启。默认值为 0 (否)。
? session.lifetime
设置 cookie 送到浏览器后的保存时间,单位为秒。默认值为 0,表示直到浏览器关闭

? session.serialize_handler
定义连续/解连续资料的标头,本功能只有 WDDX 模块或 PHP 内部使用。默认值为 php

? session.gc_probability
设置要求回应时的废物包处理机率。默认值为 1。
? session.gc_maxlifetime
设置废物被清除前的存活秒数。
? session.extern_referer_check
确定参照到客户端的 Session代码是否要删除。有时在安全或其它模式时,可设置不删
除。默认值为0。
? session.entropy_file
设置 session 代码建立时,使用外部资源或文件来建立,例如 UNIX 系统上的 /dev/r
andom 或 /dev/urandom。
? session.entropy_length
设置 session从某资源读取的位元组数。默认值为 0。
? session.use_cookies
设置是否要将session变成cookie存在使用者端。默认值为 1,表示启动此功能。
2.3 在Windows 95/NT下安装PHP
对于Apache/NT 和 Stronghold/NT组合的安装和配置请参见前一节。此节中主要介绍对
于Windows 95/NT下的IIS和MS-PWS服务器PHP的安装和配置。
用户可以简单的将php.exe这个文件放到你的程序目录下,然后使用如
r/scripts/php.exe/page.php 的形式来运行程序。
但若要采用形式如:r/page.php的方式来运行,就必须要编辑注册表了

注意:在编辑注册表前先做一个备份。如果注册表被破坏了,麻烦可就大了,需要重装
系统,否则无法启动计算机!
可以通过运行regedit.exe来编辑注册表。步骤是,在开始菜单选运行然后键入 regedi
t,按OK按钮。需要编辑的注册表设置是: HKEY_LOCAL_MACHINE:System:CurrentContro
lSet:Services:W3Svc:Parameters:ScriptMap。增加一个新名称,这就是PHP3 script程
序所要使用的扩展名,在数据栏填PHP3解析器的路径。
例如:.phtm3 "c:\webshare\scripts\php.exe"
注:.phtm3 是script程序要使用的扩展名,"c:\webshare\scripts\php.exe" 当然是p
hp.exe的绝对路径了。
若使用ISAPI版的PHP,此设置类似,分别为:
.phtm "c:\webshare\scripts\php3_isapi.dll"
下面介绍配置IIS支持PHP的方法:
图2-2 NT下配置窗口
图2-3 添加/编辑应用程序扩展名映射窗口
首先,启动Internet服务管理器(IIS),右键点击相应的WEB站点,在关联菜单中选择
【属性】。在随后弹出的属性对话框中选择【主目录】标签,并选中【应用程序设置】
下的【配置】按钮。在【应用程序映射】标签中,选择【添加】按钮,然后在配置窗口
的【可执行文件】栏中输入"c:\php\php.exe %s %s"。注意,这里除了需要指定"php.e
xe"文件的路径之外,一定要在后面加上"%s %s"字符,否则PHP将不能正常运行。在【扩
展名】一栏中,用户可以输入希望使用的PHP脚本文件的后缀名,如".php3"等。注意一
定要输入"."符号。如果用户希望指定多个PHP脚本后缀名,则重复上述步骤即可。
这样,就完成了PHP在NT IIS4环境下的整个安装和配置过程。
其他Web服务器下的安装方法请参考该服务器的文档。
名为php3.ini的配置文件必须要放在Windows目录下, PHP会自动的查找该文件, 首先
在windows的系统目录下 (c:\windows 或c:\winnt)找,然后找PHP解析器所在的目录。
另外,还可以通过设置环境变量PHPRC=\pathto\php3.ini来实现,但不是所有的服务器
都支持这种方法 (apache就是其中一个)。
2.4 如何写作PHP程序
若只会用 Frontpage、Dreamweaver 的所见即所得编辑模式来写网页,而完全不懂 HTM
L 的语法,恐怕要先下点功夫了解一下HTML语法,才能顺利的写 PHP 程序了。若早就非
常了解HTML语言的基本语法,那么应该有能力马上开始 PHP 的程序编写了。在 PHP 这
种后端服务器的程序语言,下点功夫学习HTML是必要条件。
对熟悉 Windows系列作业平台的使用者,有一套软件倒是对开发 PHP 程序是蛮方便的,
它就是"PHP Editor"。若对此软件有兴趣,不妨到 下载
最新的版本。同时还需要下载PHP程序Win32 的版本。安装妥PHP Win32 版后,在 PHP
Editor 中设置好 PHP Win32 的路径,就可以让您轻松地开发 PHP 程序了。至于在写作
PHP 程序的工作平台上,有没有 Web 服务器倒是不重要,因为在 PHP Editor 的环境
中写好的程序,按下执行的键后,由 PHP Editor 直接将所写的 PHP 程序送给 PHP Wi
n32,并将执行结果处理后,呈现在使用者的面前。
若您对 Linux/UNIX 很偏爱,或许可以尝试使用 "Bluefish",即蓝鱼PHP写作工具。只
要装好 Linux及X-Window之后就可以使用了。要使用中文的话,需要在 X-Window 加入
中文的字型及输入法。方便的话,使用 RedHat 加上 CLE 中文支持就好了。
假使您已是老 Linux/UNIX 了,并且不喜欢使用这些专门的开发工具。相信您对 vi 或
是 Emacs 一定相当熟悉,那么就在装好 Web 服务器和 PHP 程序后,直接用 vi 或 Em
acs 写 PHP 程序就可以了,并且可以直接看到执行的真正结果,和数据库或是其它的服
务程序连结,也不会有什么问题。这是一种真正"所写即所得"的方式!
2.5 安全问题
PHP是一种强大脚本语言和解析器,可以作为一个模块包含在web server中或作为CGI程
序来执行,它可以存取文件、执行命令和打开服务器上的网络连接。所有这些特性使得
任何运行在web server上的东西变的不安全。PHP被设计成一种比Perl或C安全得多的CG
I程序设计语言, 通过正确选择compile-time和 runtime的配置选项,可以自由的组合
出所需的安全性。
因为有多种途径使用PHP,也就有了许多种配置选项来控制它。这些选项保证你能将PHP
用于很多目的, 但这也同时意味着这些选项的组合和服务器的设置可能导致不安全的结
果。这一节要说明不同的配置项的组合和它们能被安全应用的场合。
由于某些原因将PHP安装成一个CGI程序,而不做为Web Server的模块是setup时的一个选
项(象 Apache),或者也可以将PHP和不同类型的CGI捆绑起来以建立安全的chroot和scr
ipt的setuid环境。这种设置中通常PHP的可执行部分放到Web Server的cgi-bin目录。C
ERT建议标准 CA-96.11 再次建议将任何的解析器放到cgi-bin下。PHP程序包甚至可以作
为一个独立的解析器,它被设计得能防止下面的入侵:
存取系统文件: 。
在问号后的信息被CGI接口作为命令行参数传递给解析器。通常解析器会打开并在命令行
执行做为参数的第一个文件。
当调用一个CGI程序时,PHP将拒绝解析命令行参数。
存取服务器上的任何web文件:
在PHP程序后的路径信息/secret/doc.html,被CGI接口转换为要打开的文件。通常一些
web server 配置指令(例如 Apache的: Action) 重定向这些请求到相应文档,例如htt
p://my.host/secret/script.php3 被送往PHP解析器。通过这种设置,web server首先
检查目录/secret的存取权限,然后把该要求重定向到
cret/script.php3。不幸的是,如果该请求直接给出重定向后的形式,Web Server将不
对 /secret/script.php3 文件进行任何检查, 而仅检查/cgi-bin/php文件的权限。通
过这种方法所有有权访问/cgi-bin/php 目录的人都能访问该Web Server上的所有文件。

在PHP中, 如果Server的document目录有任何存取限制的指令,compile-time配置选项
--enable-force-cgi-redirect 和runtime 配置指令 doc_root 和 user_dir 参数能够
阻止这种袭击。请看下面对于各种组合的说明。
1.只对public文件服务
如果服务器每个目录都有口令保护或IP存取限制,这部分的设置就不需要了。如果Web
Server不允许重定向,或者没办法通知PHP程序某个特定的请求是安全的重定向请求,这
时可以用 --disable-force-cgi-redirect 参数来配置script程序。同时还得确保PHP
script程序没有其他办法调用,既不能直接用
pt.php3 ,也不能用 重定向。
重定向功能可以配置,例如在apache可以用AddHandler和Action指令设置 (见下面的论
述)。
2.使用 --enable-force-cgi-redirect
compile-time选项阻止任何人利用类似cretdir/scrip
t.php3的方法直接调用PHP。取而代之的是,这种模式下PHP仅仅分析该请求是否通过了
Web Server的重定向法则。
通常在Apache的配置中重定向的指令这样写:
Action php3-script /cgi-bin/php
AddHandler php3-script .php3
此功能仅在Apache Web Server下测试通过,并且要将Apache非标准CGI环境变量REDIRE
CT_STATUS设置为 redirected requests。如果Web Server没有提供任何方法来区分请求
是直接请求还是间接请求的话,用户就不能使用这个功能,要改用这里讲的其他运行CG
I版本的方法。
3.设置 doc_root 或 user_dir
把现行的内容如同script和可执行程序放到web server的document目录中,被认为是不
安全的作法。如果有一些配置错误使得script没有执行,被显示成通常的HTML文档,就
将导致技术秘密或安全信息(如密码)的泄露。为此一些系统管理员宁愿给script程序
单独开设另一个只允许PHP CGI存取的目录,并且不显示任何上面错误的信息。
和上部分一样,如果web server没有提供任何方法以区分请求是直接请求还是间接请求
的话,就需要给script设置一个不同于web document root的目录doc_root。
用户可以通过php3.ini文件中的配置指令 doc_root 来规定PHP script程序的根目录,
当然设置环境变量PHP_DOCUMENT_ROOT也可以。如果做了设置,CGI版本的PHP将把请求中
的路径信息和doc_root合成起来形成完整的文件路径,因此用户可以放心此目录以外没
有任何script程序能被执行(使用下面user_dir 的除外).
在此另一个可用选项是user_dir。当没有设置user_dir时,被控制文件读取的是doc_ro
ot。如~user/doc.php3这个URL,没有打开用户宿主目录下的文件, 而
是打开了doc_root目录下一个叫~user/doc.php3 的文件(是一个开始于~ 的目录名).
如果user_dir设成public_php,一个类似~user/doc.php3的请求,将打
开用户宿主目录下的public_php目录下的doc.php3 文件。如果用户的宿主目录是/home
/user, 则该文件就是 /home/user/public_php/doc.php3.
不管doc_root怎么设置user_dir 都会发生扩展,所以用户可以单独控制document目录和
用户目录

阅读(545) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~