扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
强迫 CGI 重导
语法: enableforcecgiredirect
范例: 若使用 CGI VERSION 模式来执行 PHP 的设,打开本选项会增加安全性。例如使用者读 http://my.host/cgibin/php/secret/doc.html 遇到比较了解 PHP 系统的骇客级使用者可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关资讯。若 PHP 和 Apache 编译在一起,让 PHP 变成 Apache 的一部份,则不需要加入本选项。
不使用短的标记
语法: disableshorttags
说明: 设定本选项后,PHP 的程式就不能使用短的 <? .... ?> 标记,一定要用 <?php ...... ?> 的长标记。
引入远端档案
语法: enableurlincludes
说明: 设定本选项可让 PHP 程式可以引入 (include) 远端的 HTTP 或 FTP 伺服器中的档案。
关闭语法效果
语法: disablesyntaxhl
说明: 使用本选项会关闭 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() 函式可否作用。当系统处于安全模式 (safemode) 时,本选项 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
设定是否允许 SybaseCT 资料库长期连线 (persistent connections),内定值是开启的。
sybct.max_persistent integer
设定每个处理程序最多保持几个 SybaseCT 长期连线。内定值为 1 表示无限制。
sybct.max_links integer
设定每个处理程式最多开几个 SybaseCT 连线,包括长期连线。内定值为 1,表示没有限制。
sybct.min_server_severity integer
设定 SybaseCT 伺服器错误报告的最少笔数。内定值为 10。
sybct.min_client_severity integer
设定 SybaseCT 客户端错误报告的最少笔数。内定值为 10。
sybct.login_timeout integer
设定 SybaseCT 最久可以使用的登入时间。内定值为 1 分钟。
sybct.timeout integer
设定 SybaseCT 的 query 操作时间限制。内定值为无限制。
sybct.hostname string
设定 SybaseCT 可连线机器名称。内定值不设限
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 及 XWindow 之后就可以使用了。要使用中文的话,需要在 XWindow 加入中文的字型及输入法,要方便的话,使用 RedHat 加上 CLE 中文支援就好了。
假使您已是老 Linux/UNIX 了,也不喜欢使用这些专门的开发工具。相信您对 vi 或是 Emacs 一定相当熟悉,那么就在装妥 Web 伺服器和 PHP 程式后,直接用 vi 或 Emacs 写 PHP 程式就可以了,并且可以直接看到执行的真正结果,和资料库或是其它的伺服程式连结,也不会有什么问题。这种「所写即所得」的方式,岂不痛快!!
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者