为什么会出现这
种奇怪的情况呢? 起初我认为 require_once(filename)函数中的参数 filename 采用了相对路径,是以当 前 php 文件为参照物的,但我查阅了相关资料后,推翻了自己的观点。 在 php.ini 中有个参数叫做 include_path, 它类似 DOS 和 UNIX 中的 PATH 环境变量, 为 require/include_once()、require/include()提供了供搜索的路径列表,例如: include_path = .:/usr/local/lib/php:./include 在 UNIX 下我们用冒号分隔每个路径,在 Windows 下则用分号分隔。我们看到在 include_path 的默认值中包含"."的路径,它就是造成人们“相对路径”假象的“罪魁祸首”,另 外我们可以加上"/"的
搜索路径,在架设了虚拟主机的服务器上,这个路径是很有用的。 当我们辛辛苦苦架好第一个 php 环境后,都会沉浸在无比的兴奋当中,从而忘记了对 php.ini 的进一步研究;事实上,一旦某些参数设置不当导致错误,我们就会花很长的时间 去找原因,这个代价足以让很多电脑爱好者望而生畏。其实 UNIX/LINUX 的难,也就“难” 在这里。
Paths and Directories
表格 H-5. 路径和目录配置选项
名称 include_path doc_root user_dir extension_dir cgi.fix_pathinfo cgi.force_redirect
默认值 PHP_INCLUDE_PATH PHP_INCLUDE_PATH NULL
类型
PHP_INI_ALL PHP_INI_SYSTEM PHP_INI_SYSTEM
PHP_EXTENSION_DIR PHP_INI_SYSTEM "0" "1" PHP_INI_SYSTEM PHP_INI_SYSTEM PHP_INI_SYSTEM PHP_INI_SYSTEM PHP_INI_SYSTEM
cgi.redirect_status_env "" fastcgi.impersonate cgi.rfc2616_headers "0" "0"
以下是该配置选项的简要解释。
include_path string
指定一组目录用于 require() include() 和 fopen_with_path() 函数来寻找文件。格式和系统的 require(),include()
PATH 环境变量类似:一组目录的
列表,在 UNIX 下用冒号分隔,在 Windows 下用分号分
隔。
例子 H-1. UNIX include_path
include_path=".:/php/includes"
例子 H-2. Windows include_path
include_path=".;c:\php\includes"
在包含路径中使用 . 可以允许相对路径,它代表当前目录。
doc_root string
PHP 在服务器上的根目录。仅在非空时使用。如果 PHP 被配置为安全模式,则此目录之外的文件一概 不被解析。 如果 PHP 编译时没有指定 FORCE_REDIRECT, 并且在任何 web 服务器 (除了 IIS) 中以 CGI 方式运行 PHP,则应该设定 doc_root。替代
方案是使用下面的 cgi.force_redirect 配置选项。
user_dir string
在用户目录之下使用 PHP 文件的基本目录名,例如 public_html。
extension_dir string
PHP 用来寻找动态连接扩展库的目录。参见 enable_dl 和 dl() dl()。
extension string
当 PHP 启动时所加载的动态连接扩展库。
cgi.fix_pathinfo boolean
对 CGI 提供了真正的 PATH_INFO/PATH_TRANSLATED 支持。 以前 PHP 的行为是将 PATH_TRANSLATED 设 为 SCRIPT_FILENAME,而不管 PATH_INFO 是什么。有关 PATH_INFO 的更多信息见 cgi 规格。将此值 设为 1 将使 PHP CGI 修正其路径以遵守规格。设为 0 将使 PHP 的行为和从前一样。默认为零。用户 应该修正其脚本使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED。
cgi.force_redirect boolean
在大多数 web 服务器中以 CGI 方式运行 PHP 时很有必要用 cgi.force_redirect 提供安全。PHP 默 认其为 On。可以将其关闭,但风险自担。
可以安全地在 IIS 之下将其关闭, 事实上必须这么做。 要在 OmniHTTPD 或 Xitami 注: Windows 用户: 之下使用也必须将其关闭。
cgi.redirect_status_env string
如果打开了 cgi.force_redirect,并且不是在 Apache 或 Netscape(iPlanet)web 服务器之下运行, 可能需要设定一个环境变量名,PHP 将去寻找它来知道可以继续执行下去。
注: 设定此变量可能会导致安全
问题,首先要知道自己在做什么。
fastcgi.impersonate str