以下是基本的安装动作,作业环境是 UNIX 系列的作业平台。在安装之前,要先下载 apache_1.3.x.tar.gz 及 php-3.0.x.tar.gz 二个档案。可以将这二个档案放在 /usr/src 中再开始执行以下的动作。而下面每个行号后的动作都是整串字连在一起的,在这可能会分行而造成误会。
gzip -d -c apache_1.3.x.tar.gz | tar xvf -
gzip -d -c php-3.0.x.tar.gz | tar xvf -
cd apache_1.3.x
./configure --prefix=/www
cd ../php-3.0.x
./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
make
make install
cd ../apache_1.3.x
./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
make
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 外部模组也要先设定好这些模组。
cd ../php-3.0.x
cp php3.ini-dist /usr/local/lib/php3.ini
之后将 php3.ini 放在指定的目录,若有需要,也可以手动修改 php3.ini 档档,以符合使用的要求。
在 Apache 伺服器的设定方面,要在 Apache 的设定档 httpd.conf 或 srm.conf 档案中加入下面的字串。告诉 Apache 伺服器,副档名 php3 是一个特殊的程式档案。当然副档名可以设成别的副档名,还有一些站台将 php 的程式副档名设为 phtml 也是不错的选择,反正这就要看 Webmaster 的规划了。
AddType application/x-httpd-php3 .php3
--------------------------------------------------------------------------------
在 PHP 4.x 版的方法大致和 PHP 3.0.x 版相同,不同的地方在于 PHP 4.x 的目录名称及编译后的模组放置目录不同。此外,内定的副档名也由 .php3 变成了 .php。当然在安装前还是要先下载 PHP 4.x 的程式才行。
gzip -dc apache_1.3.x.tar.gz | tar xvf -
gzip -dc php-4.0.x.tar.gz | tar xvf -
cd apache_1.3.x
./configure --prefix=/www
cd ../php-4.0.x
./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
make
make install
cd ../apache_1.3.x
./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
make
make install
cd ../php-4.0.x
cp php.ini-dist /usr/local/lib/php.ini
在 httpd.conf 或 srm.conf 加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
而 PHP 4.x 版中对 Apache 伺服器加入了新的环境变数设定项。
php_value [PHP directive name] [value]
php_flag [PHP directive name] [On|Off]
php_admin_value [PHP directive name] [value]
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 程式吧!
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
PHP 的编译设定细部选项
--------------------------------------------------------------------------------
在细部选项上,除了上述的安装简述外,也可以在编译时加入其它的选项。
阿帕契模组
语法: --with-apache=DIR
说明: 用本选项可以让 PHP 以阿帕契的模组方式使用,DIR 的字串可以是 /usr/local/apache 或其它安装阿帕契的目录
范例: --with-apache=/var/lib/apache
fhttpd 伺服器模组
语法: --with-fhttpd=DIR
说明: 若使用 fttpd 伺服器,可以使用本指令编译 PHP。用模组的方式配合 fttpd 伺服器,可以有较好的效能。
Adabas D 资料库
语法: --with-adabas=DIR
说明: 资料库系统为 Adabas D 资料库时需要加本选项。关于 Adabas D 资料库的细节,可以参考 http://www.adabas.com。
范例: --with-adabas=/usr/local/adabasd
dBase 资料表
语法: --with-dbase
说明: 只要加本选项,不用其它的参数或函式库,PHP 就会让系统有存取 dBase 资料表的功能。
filePro 资料库
语法: --with-filepro
说明: 不用指定资料库路径及其它函式库等,可以读取 filePro 资料库 (唯读)。
mSQL 资料库
语法: --with-msql=DIR
说明: 提供存取 mSQL 资料库。更多的细节请参考 mSQL 的网站 http://www.hughes.com.au。
范例: --with-msql=/usr/local/Hughes
MySQL 资料库
语法: --with-mysql=DIR
说明: 提供存取 MySQL 资料库。更多的细节请参考 MySQL 的网站 http://www.tcx.se。
范例: --with-mysql=/usr/local/mysql
iODBC 资料库装置
语法: --with-iodbc=DIR
说明: 提供 ODBC 资料库装置,用来存取后端资料库。更多的细节请参考 iODBC 的网站 http://www.iodbc.org。
范例: --with-iodbc=/usr/local/iodbc
OpenLink ODBC 资料库装置
语法: --with-openlink=DIR
说明: 使用 OpenLink ODBC 资料库装置,用来存取后端资料库。更多的细节请参考 OpenLink ODBC 的网站 http://www.openlinksw.com。
范例: --with-openlink=/usr/local/openlink
Oracle 资料库
语法: --with-oracle=DIR
说明: 使用 Oracle 资料库。Oracle 的版本要在 7.3 版以上。您也可以在 PHP 程式中使用环境变数 ORACLE_HOME 来指定 Oracle 的路径。更多有关 Oracle 的资讯请参考 Oracle 的网站 http://www.oracle.com。
范例: --with-oracle=/export/app/oracle/product/7.3.2
PostgreSQL 资料库
语法: --with-pgsql=DIR
说明: 使用 PostgreSQL 资料库。更多有关 PostgreSQL 的资讯请参考 PostgreSQL 的网站 http://www.postgreSQL.org 或台湾的 Mirror 站 http://postgresql.ccit.edu.tw。
范例: --with-pgsql=/usr/local/pgsql
Solid 资料库
语法: --with-solid=DIR
说明: 使用 Solid 资料库。更多有关 Solid 的资讯请参考 Solid 的网站 http://www.solidtech.com。
范例: --with-solid=/usr/local/solid
Sybase 资料库
语法: --with-sybase=DIR
说明: 使用 Sybase 资料库。更多有关 Sybase 的资讯请参考 Sybase 的网站 http://www.sybase.com。
范例: --with-sybase=/home/sybase
Sybase-CT 资料库
语法: --with-sybase-ct=DIR
说明: 使用 Sybase-CT 资料库。
范例: --with-sybase-ct=/home/sybase
Velocis 资料库
语法: --with-velocis=DIR
说明: 使用 Velocis 资料库。有关 Velocis 资料库的进一步资料请参考 Raima 公司的网站 http://www.raima.com。
范例: --with-velocis=/usr/local/velocis
自订 ODBC 资料库驱动程式
语法: --with-custom-odbc=DIR
说明: 使用自订的 ODBC 函式库。当然,在使用本方式时要指定 CUSTOM_ODBC_LIBS 及 CFLAGS 变数。例如在 QNX 机器上使用 Sybase SQL Anywhere 时可能要设定系统环境变数 CFLAGS=-DODBC_QNX、LDFLAGS=-lunix 及 CUSTOM_ODBC_LIBS="-ldblib -lodbc",并要在 PHP 设定加入 --with-custom-odbc=/usr/lib/sqlany50
范例: --with-custom-odbc=/usr/local/odbc
不使用 ODBC 资料库驱动程式
语法: --disable-unified-odbc
说明: 使用本选项将使所有的 ODBC 资料库驱动程式不作用。本选项不用指定路径,而受本选项影响的选项有 --with-iodbc、--with-solid、--with-adabas、--with-velocis 及 --with-custom-odbc。
LDAP 目录协定
语法: --with-ldap=DIR
说明: 若要使用目录协定 (Lightweight Directory Access Protocol, LDAP) 则必须要打开本选项。有关 LDAP 的细节,可以参考 RFC 文件的 RFC1777 及 RFC1778。
范例: --with-ldap=/usr/local/ldap.
mcrypt 编码函式库
语法: --with-mcrypt=DIR
说明: 当安装了 mcrypt 函式库后,可在编译 PHP 时加入本选项,让程式可以使用编解码功能。
范例: --with-mcrypt=/usr/local/include
Sys V 信号
语法: --enable-sysvsem
说明: 要使用 SysV 的信号 (semaphores) 机制,则要打开本选项。
XML 支援
语法: --with-xml
说明: 打开本选项可以支援 James Clark's 写的 XML 剖析程式库。
维护模式
语法: --enable-maintainer-mode
说明: 本选项一般不会打开,除非是 PHP 开发人员比较有用。
常规表示程式库
语法: --with-system-regex
说明: 若您需要额外的常规表示功能,可以加入本选项。
PHP 设定档
语法: --with-config-file-path=DIR
说明: 用来指定 php3.ini 或 php4.ini 的路径,供 PHP 初始化时使用。
范例: --with-config-file-path=/usr/local/lib
PHP 执行路径
语法: --with-exec-dir=DIR
说明: 有时为了系统的安全性考量,会指定 PHP 程式一定要在哪个目录执行。
范例: --with-exec-dir=/usr/local/bin
除错模式
语法: --enable-debug
说明: 本选项一般不会使用,除非在开发 PHP 程式时比较有用。它可以显示额外的错误讯息。
安全模式
语法: --enable-safe-mode
说明: 内定值是打开的,可以对系统安全提供比较多的保护。
变数追踪
语法: --enable-track-vars
说明: 让 PHP 能 追踪 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三个变数,一般是打开的。
自动加引入字元
语法: --enable-magic-quotes
说明: 可让程式在执行时自动加入反斜线的引入字元。
开启除错器
语法: --enable-debugger
说明: 打开内建的 PHP 除错器。目前本功能还在实验阶段,尚未成熟。
取消路径 (discard path)
语法: --enable-discard-path
说明: 打开这个选项,使用者就不能透过浏览器读取 .htaccess 等和系统安全相关的档案。
高精确度数学函式
语法: --enable-bcmath
说明: 打开高精确度函式。必须要先安装本函式库,本选项方有效。
强迫 CGI 重导
语法: --enable-force-cgi-redirect
范例: 若使用 CGI VERSION 模式来执行 PHP 的设,打开本选项会增加安全性。例如使用者读 http://my.host/cgi-bin/php/secret/doc.html 遇到比较了解 PHP 系统的骇客级使用者可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关资讯。若 PHP 和 Apache 编译在一起,让 PHP 变成 Apache 的一部份,则不需要加入本选项。
不使用短的标记
语法: --disable-short-tags
说明: 设定本选项后,PHP 的程式就不能使用短的 <? .... ?> 标记,一定要用 <?php ...... ?> 的长标记。
引入远端档案
语法: --enable-url-includes
说明: 设定本选项可让 PHP 程式可以引入 (include) 远端的 HTTP 或 FTP 伺服器中的档案。
关闭语法效果
语法: --disable-syntax-hl
说明: 使用本选项会关闭 PHP 语法的彩色效果。
函式库路径
语法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR
说明: 若 PHP 在安全或编译所需的函式库在特别的路径,需要加入本选项,LDFLAGS 表示函式库的路径,CPPFLAGS 表示标头档的路径。
范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
php.ini 设定细部选项
--------------------------------------------------------------------------------
php.ini 或 php3.ini 是 PHP 在启动时会读取的设定档。该档的存放路径为 /usr/local/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 程式中有用到 exit() 函式,则指定的档案不会执行。参数 string 即为指定自动执行的档案。
auto_prepend_file string
设定本选项可以让指定的档案在原 PHP 程式之前自动执行。参数 string 即为指定自动执行的档案。
cgi_ext string
本选项设定 CGI 程式的副档名。
display_errors boolean
本选项设定是否要将执行的错误讯息显示在使用者的浏览器上。
doc_root string
设定伺服器的文件及 PHP 档案放置的根目录。
engine boolean
本选项需要使用阿帕契的模组方式使用 PHP。可设定是否要使用 PHP 引擎。在 httpd.conf 中加入 php3_engine on/off 亦可设定某目录或某虚拟站台是否要用 PHP 解译器。
error_log string
本选项用来设定错误记录档。在 UNIX 系统上参数 string 即为档名。Windows NT 会将记录记在事件检视器的日志之中。Windows 95/98 则不支援系统记录。
error_reporting integer
本选项用来设定系统记录的等级。参数 integer 即为等级的级数旗标,可以加在一起,内定值为 7,见下表
级数 说明
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 取代 GET。
ignore_user_abort string
内定值为 Off。用来设定当传输未完成时,使用者端断线是要继续处理。
include_path string
为 PHP 程式中 require、include 及 fopen_with_path 等函式的档案搜寻路径。在 UNIX 或 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 标记 (<? ?>)。若不使用,则必须要用 <?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 函式使用。参数 string 为 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_pconnect() 函式。
mysql.max_persistent integer
设定每个处理程序最多保持几个 MySQL 长期连线。
mysql.max_links integer
设定每个处理程式最多开几个 MySQL 连线,包括长期连线。
msql.allow_persistent boolean
设定是否允许 mSQL 资料库长期连线 (persistent connections),会影响 msql_pconnect() 函式。
msql.max_persistent integer
设定每个处理程序最多保持几个 mSQL 长期连线。
msql.max_links integer
设定每个处理程式最多开几个 mSQL 连线,包括长期连线。
pgsql.allow_persistent boolean
设定是否允许 Postgres 资料库长期连线 (persistent connections),会影响 pg_pConnect() 函式。
pgsql.max_persistent integer
设定每个处理程序最多保持几个 Postgres 长期连线。
pgsql.max_links integer
设定每个处理程式最多开几个 Postgres 连线,包括长期连线。
sybase.allow_persistent boolean
设定是否允许 Sybase 资料库长期连线 (persistent connections),会影响 sybase_pconnect() 函式。
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_pconnect() 函式。
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_pconnect() 函式。
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
设定每笔要求回应时的废物蒐集 (gc, garbage collection) 处理机率。内定值为 1。
session.gc_maxlifetime
设定废物被清除前的存活秒数。
session.extern_referer_check
决定参照到客户端的 Session 代码是否要删除。有时在安全或其它考量时,会设定不删除。内定值为 0。
session.entropy_file
设定 session 代码建立时,使用外部高熵值资源或档案来建立,例如 UNIX 系统上的 /dev/random 或 /dev/urandom。
session.entropy_length
设定 session 从高熵值资源读取的位元组数。内定值为 0。
session.use_cookies
设定是否要将 session 变成 cookie 存在使用者端。内定值为 1,表是开启本功能。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
hello, world
--------------------------------------------------------------------------------
在 K&R 二教授的经典名著 The C Programming Language 一书中的 "hello, world" 几乎已经变成了所有程式语言的第一个范例。因此,在这儿也用 PHP 来写个最基本的 "hello, world" 程式。
<html>
<head>
<title>First program</title>
</head>
<body>
<?php
echo "hello, world
";
?>
</body>
</html>
这十行程式在 PHP 中不需经过编译等复杂的过程,只要将它放在设定好可执行 PHP 语法的伺服器中,将它存成档案 helloworld.php 好了。在用户的浏览器端,只要在 Location: 输入 http://some.hostname/helloworld.php,就可以在浏览器上看到 hello, world 字串出现。
我们可以看到,这个程式只有三行有用,其它六行都是标准的 HTML 语法。而它在传回浏览器时和 JavaScript 或 VBScript 完全不一样,PHP 的程式没有传到浏览器,只在浏览器上看到短短的几个字 "hello, world"。
在第六行及第八行,分别是 PHP 的开始及结束的嵌入符号。第七行才是伺服器端执行的程式。在这个例子中,"
" 和 C 语言的表示都一模一样,代表换行的意思。在第一章也有介绍过 PHP 是混合多种语言而成,而 C 正是含量最多的语言。在一个叙述式结束后,要加上分号代表结束。
---------
如何写作 PHP 程式
--------------------------------------------------------------------------------
若只会用 Frontpage、Dreamweaver 的所见即所得编辑模式来写网页,而完全不懂 HTML 的语法,恐怕要先下点功夫了解 HTML 语法,才能顺利的写 PHP 程式了。若早就极度了解 HTML 幕后排版语言的语法,那么应该可以马上开始 PHP 的程式写作了。在 PHP 这种后端伺服器的程式语言,下苦功去学习 HTML 是写作的必备条件。
对熟悉 Windows 系列作业平台的使用者,有套软体倒是在开发 PHP 程式上是蛮方便的,就是 PHP Editor,若对这软体有兴趣,不妨到 http://www.soysal.com/PHPEd 下载最新的版本。同时还需要下载 PHP 程式 Win32 的版本。安装妥 PHP Win32 版后,在 PHP Editor 中设定好 PHP Win32 的路径,就可以让您轻松地开发 PHP 程式了。至于在写作 PHP 程式的工作平台上,有没有 Web 伺服器倒是不重要,因为在 PHP Editor 的环境中写好的程式,按下执行的键后,由 PHP Editor 直接将所写的 PHP 程式送给 PHP Win32,并将执行结果处理后,呈现在使用者的面前。
若您和笔者一样,对 Linux/UNIX 很偏执,或许可以尝试使用 Bluefish: 蓝鱼 PHP 写作工具,只要装好 Linux 及 X-Window 之后就可以使用了。要使用中文的话,需要在 X-Window 加入中文的字型及输入法,要方便的话,使用 RedHat 加上 CLE 中文支援就好了。
假使您已是老 Linux/UNIX 了,也不喜欢使用这些专门的开发工具。相信您对 vi 或是 Emacs 一定相当熟悉,那么就在装妥 Web 伺服器和 PHP 程式后,直接用 vi 或 Emacs 写 PHP 程式就可以了,并且可以直接看到执行的真正结果,和资料库或是其它的伺服程式连结,也不会有什么问题。这种「所写即所得」的方式,岂不痛快!!