https://haydenjames.io/understanding-php-memory_limit/ 很好地解释了 memory_limit 设置。
此列表包含您可以设置以配置 PHP 设置的核心 php.ini 指令。扩展程序处理的指令分别列在扩展程序文档页面中;例如,有关会话指令的信息可以在会话页面中找到。
注意:
当未加载 php.ini 时,将使用此处列出的默认值;生产和开发 php.ini 的值可能会有所不同。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
short_open_tag | "1" | INI_PERDIR |
|
precision | "14" | INI_ALL |
|
serialize_precision | "-1" | INI_ALL |
在 PHP 7.1.0 之前,默认值为 17。 |
disable_functions | "" | INI_SYSTEM 仅限 |
|
disable_classes | "" | php.ini 仅限 | |
exit_on_timeout | "" | INI_ALL |
|
expose_php | "1" | php.ini 仅限 | |
hard_timeout | "2" | INI_SYSTEM |
从 PHP 7.1.0 开始可用。 |
zend.exception_ignore_args | "0" | INI_ALL |
从 PHP 7.4.0 开始可用 |
zend.multibyte | "0" | INI_ALL |
|
zend.script_encoding | NULL | INI_ALL |
|
zend.detect_unicode | NULL | INI_ALL |
|
zend.signal_check | "0" | INI_SYSTEM |
|
zend.assertions | "1" | INI_ALL 受限制 |
|
zend.exception_string_param_max_len | "15" | INI_ALL |
从 PHP 8.0.0 开始可用。 |
以下是配置指令的简短说明。
short_open_tag
bool告诉 PHP 是否允许使用 PHP 短标签 (<? ?>
)。如果您想将 PHP 与 XML 结合使用,您可以禁用此选项以便使用 <?xml ?>
内联。否则,您可以使用 PHP 打印它,例如:<?php echo '<?xml version="1.0"?>'; ?>
。此外,如果禁用,则必须使用 PHP 长标签 (<?php ?>
)。
注意:
此指令不影响简写
<?=
,它始终可用。
precision
int-1
表示将使用改进的舍入算法。
serialize_precision
int-1
表示将使用改进的舍入算法。
expose_php
bool向外界暴露 PHP 已安装在服务器上,包括 HTTP 标头中的 PHP 版本(例如,X-Powered-By: PHP/5.3.7)。
disable_functions
stringdisable_classes
string此指令允许禁用某些类。它采用用逗号分隔的类名列表。禁用类只会阻止实例化类。
只能使用此指令禁用内部类。用户定义的类不受影响。
此指令必须在 php.ini 中设置。它不能在 httpd.conf 中设置。zend.assertions
int1
时,将生成并执行断言代码(开发模式)。设置为 0
时,将生成断言代码,但在运行时将跳过(不执行)。设置为 -1
时,将不生成断言代码,使断言零成本(生产模式)。
注意:
如果进程在生产模式下启动,则zend.assertions 无法在运行时更改,因为没有生成断言代码。
如果进程在开发模式下启动,则zend.assertions 无法在运行时设置为
-1
。
zend.exception_string_param_max_len
int"0"
和 "1000000"
之间。
hard_timeout
int当在max_execution_time中设置的超时时间已到时,PHP 运行时将优雅地拆除资源。如果在此过程中出现卡住的情况,则硬超时将持续设定的秒数。当硬超时时间到时,PHP 将异常退出。设置为 0 时,硬超时将永远不会激活。
当 PHP 因硬超时停止时,它将类似于:
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.exception_ignore_args
bool从异常生成的堆栈跟踪中排除参数。
zend.multibyte
bool启用对多字节编码源文件的解析。启用 zend.multibyte 才能使用像 SJIS、BIG5 等包含多字节字符串数据中特殊字符的字符编码。UTF-8、EUC 等与 ISO-8859-1 兼容的编码不需要此选项。
启用 zend.multibyte 需要 mbstring 扩展可用。
zend.script_encoding
string除非脚本顶部出现declare(encoding=...)指令,否则将使用此值。当使用与 ISO-8859-1 不兼容的编码时,必须同时使用 zend.multibyte 和 zend.script_encoding。
文字字符串将从 zend.script_encoding 转化到 mbstring.internal_encoding,就像调用了mb_convert_encoding()一样。
zend.detect_unicode
bool检查 BOM(字节顺序标记)并查看文件是否包含有效的多字节字符。此检测在处理 __halt_compiler() 之前执行。仅在 Zend 多字节模式下可用。
zend.signal_check
bool在关闭时检查被替换的信号处理程序。
exit_on_timeout
bool这是一个仅限 Apache1 mod_php 的指令,如果发生 PHP 执行超时,它会强制 Apache 子进程退出。这种超时会在 Apache1 中导致内部 longjmp() 调用,这可能会使某些扩展处于不一致的状态。通过终止进程,任何未完成的锁或内存都将被清理。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
memory_limit | "128M" | INI_ALL |
以下是配置指令的简短说明。
memory_limit
int这将设置脚本允许分配的最大内存量(以字节为单位)。这有助于防止编写不良的脚本占用服务器上的所有可用内存。请注意,要没有内存限制,请将此指令设置为 -1
。
另请参见:max_execution_time。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
realpath_cache_size | "4M" | INI_SYSTEM |
在 PHP 7.0.16 和 7.1.2 之前,默认为 "16K" |
realpath_cache_ttl | "120" | INI_SYSTEM |
注意:
使用 open_basedir 将禁用 realpath 缓存。
以下是配置指令的简短说明。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
arg_separator.output | "&" | INI_ALL |
|
arg_separator.input | "&" | INI_PERDIR |
|
variables_order | "EGPCS" | INI_PERDIR |
|
request_order | "" | INI_PERDIR |
|
auto_globals_jit | "1" | INI_PERDIR |
|
register_argc_argv | "1" | INI_PERDIR |
|
enable_post_data_reading | "1" | INI_PERDIR |
|
post_max_size | "8M" | INI_PERDIR |
|
auto_prepend_file | NULL | INI_PERDIR |
|
auto_append_file | NULL | INI_PERDIR |
|
default_mimetype | "text/html" | INI_ALL |
|
default_charset | "UTF-8" | INI_ALL |
|
input_encoding | "" | INI_ALL |
|
output_encoding | "" | INI_ALL |
|
internal_encoding | "" | INI_ALL |
以下是配置指令的简短说明。
arg_separator.output
stringPHP 生成的 URL 中用于分隔参数的分隔符。
arg_separator.input
stringPHP 用于将输入 URL 解析为变量的分隔符列表。
注意:
此指令中的每个字符都被视为分隔符!
variables_order
string设置EGPCS(E
nvironment,G
et,P
ost,C
ookie 和 S
erver)变量解析的顺序。例如,如果将variables_order设置为"SP"
,则PHP将创建超全局变量$_SERVER和$_POST,但不会创建$_ENV,$_GET和$_COOKIE。设置为""表示不会设置任何超全局变量。
在CGI和FastCGI SAPI中,$_SERVER也由环境中的值填充;S
始终等效于ES
,无论E
在此指令中的其他位置。
注意:
$_REQUEST的内容和顺序也会受此指令影响。
request_order
string此指令描述PHP将GET、POST和Cookie变量注册到_REQUEST数组的顺序。注册是从左到右进行的,较新的值会覆盖较旧的值。
如果未设置此指令,则variables_order将用于$_REQUEST内容。
请注意,默认分发php.ini文件由于安全问题而不包含cookie的'C'
。
auto_globals_jit
bool启用后,SERVER、REQUEST和ENV变量将在首次使用时(Just In Time)创建,而不是在脚本启动时创建。如果脚本中未使用这些变量,则启用此指令将提高性能。
在编译时检查SERVER、REQUEST和ENV变量的使用情况,因此例如通过可变变量使用它们不会导致它们的初始化。
register_argc_argv
boolenable_post_data_reading
boolpost_max_size
intpost_max_size
。 当使用int时,值以字节为单位测量。也可以使用此常见问题解答中描述的简写表示法。 如果POST数据的大小大于post_max_size,则$_POST和$_FILES超全局变量为空。这可以通过多种方式跟踪,例如,通过将$_GET变量传递到处理数据的脚本,即<form action="edit.php?processed=1">
,然后检查$_GET['processed']是否已设置。
注意:
PHP允许使用字节值的快捷方式,包括K(千字节)、M(兆字节)和G(吉字节)。如果您使用这些快捷方式,PHP将自动进行转换。请注意不要超过32位有符号整数限制(如果您使用的是32位版本),因为它会导致脚本失败。
版本 | 描述 |
---|---|
5.3.4 |
当内容类型为application/x-www-form-urlencoded或未在PHP中注册时,post_max_size = 0不会禁用限制。 |
5.3.2 , 5.2.12 | 通过将post_max_size 设置为0来允许无限的POST大小。 |
auto_prepend_file
string指定在主文件之前自动解析的文件名。该文件包含的方式如同使用require函数调用一样,因此使用include_path。
特殊值none
禁用自动预置。
auto_append_file
string指定在主文件之后自动解析的文件名。该文件包含的方式如同使用require函数调用一样,因此使用include_path。
特殊值none
禁用自动附加。
注意:如果脚本使用exit()终止,则不会发生自动附加。
default_mimetype
string默认情况下,PHP将使用Content-Type标头输出媒体类型。要禁用此功能,只需将其设置为empty即可。
PHP的内置默认媒体类型设置为text/html。
default_charset
string"UTF-8"是默认值,如果省略encoding
参数,则其值将用作htmlentities()、html_entity_decode()和htmlspecialchars()的默认字符编码。default_charset
的值还将用于设置iconv函数的默认字符集,如果iconv.input_encoding
、iconv.output_encoding
和iconv.internal-encoding
配置选项未设置,以及如果mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
配置选项未设置,则用于mbstring函数。
所有版本的PHP都将此值用作PHP发送的默认Content-Type标头中的字符集,除非标头被对header()的调用覆盖。
不建议将default_charset
设置为empty值。
input_encoding
string此设置用于mbstring和iconv等多字节模块。默认为empty。
output_encoding
string此设置用于mbstring和iconv等多字节模块。默认为empty。
internal_encoding
string此设置用于mbstring和iconv等多字节模块。默认为empty。如果为空,则使用default_charset。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
include_path | ".;/path/to/php/pear" | INI_ALL |
|
open_basedir | NULL | INI_ALL |
|
doc_root | NULL | INI_SYSTEM |
|
user_dir | NULL | INI_SYSTEM |
|
user_ini.cache_ttl | "300" | INI_SYSTEM |
|
user_ini.filename | ".user.ini" | INI_SYSTEM |
|
extension_dir | "/path/to/php" | INI_SYSTEM |
|
extension | NULL | php.ini 仅限 | |
zend_extension | NULL | php.ini 仅限 | |
cgi.check_shebang_line | "1" | INI_SYSTEM |
|
cgi.discard_path | "0" | INI_SYSTEM |
|
cgi.fix_pathinfo | "1" | INI_SYSTEM |
|
cgi.force_redirect | "1" | INI_SYSTEM |
|
cgi.nph | "0" | INI_SYSTEM |
|
cgi.redirect_status_env | NULL | INI_SYSTEM |
|
cgi.rfc2616_headers | "0" | INI_ALL |
|
fastcgi.impersonate | "0" | INI_SYSTEM |
|
fastcgi.logging | "1" | INI_SYSTEM |
以下是配置指令的简短说明。
include_path
string指定require、include、fopen()、file()、readfile()和file_get_contents()函数查找文件的目录列表。格式类似于系统的PATH环境变量:在Unix中用冒号分隔,在Windows中用分号分隔的目录列表。
PHP在查找要包含的文件时会分别考虑include路径中的每个条目。它将检查第一条路径,如果找不到,则检查下一条路径,直到找到包含的文件或返回E_WARNING
或E_ERROR
。您可以使用set_include_path()在运行时修改或设置include路径。
示例1 Unix include_path
include_path=".:/php/includes"
示例2 Windows include_path
include_path=".;c:\php\includes"
在 include 路径中使用 .
允许相对包含,因为它表示当前目录。但是,显式使用 include './file'
比让 PHP 总是检查每个 include 的当前目录效率更高。
注意:
.ini 文件也可以访问
ENV
变量。因此,可以使用${LOGIN}
和${USER}
来引用主目录。环境变量可能因服务器 API 而异,因为这些环境可能不同。
示例 #3 使用 ${USER} 环境变量的 Unix include_path
include_path = ".:${USER}/pear/php"
open_basedir
字符串将 PHP 可以访问的文件限制在指定的目录树中,包括文件本身。
当脚本尝试访问文件系统时,例如使用 include 或 fopen(),会检查文件的位置。如果文件位于指定的目录树之外,PHP 将拒绝访问它。所有符号链接都将被解析,因此无法使用符号链接来避免此限制。如果文件不存在,则无法解析符号链接,并且文件名将与(已解析的)open_basedir 进行比较。
open_basedir 可能会影响不仅仅是文件系统函数;例如,如果 MySQL
配置为使用 mysqlnd
驱动程序,则 LOAD DATA INFILE
将受 open_basedir 的影响。PHP 的许多扩展功能都以这种方式使用 open_basedir
。
特殊值 .
表示将使用脚本的工作目录作为基目录。但是,这有点危险,因为可以使用 chdir() 轻松更改脚本的工作目录。
在 httpd.conf 中,可以关闭 open_basedir(例如,对于某些虚拟主机),方法与 使用任何其他配置指令的方式相同,例如使用 "php_admin_value open_basedir none
"。
在 Windows 系统下,用分号分隔目录;在所有其他系统中,用冒号分隔目录。作为 Apache 模块,现在会自动继承父目录中的 open_basedir 路径。
使用 open_basedir 指定的限制是目录名,而不是前缀。
默认情况下允许打开所有文件。
注意:可以在运行时收紧 open_basedir。这意味着,如果在 php.ini 中将 open_basedir 设置为
/www/
,则脚本可以使用 ini_set() 在运行时将其收紧到/www/tmp/
。列出多个目录时,无论操作系统如何,都可以使用 PATH_SEPARATOR 常量作为分隔符。 从 PHP 8.3.0 开始,使用 ini_set() 在运行时设置 open_basedir 时,它不再接受包含父目录 (..
) 的路径。
注意:
使用 open_basedir 将把 realpath_cache_size 设置为
0
,从而禁用 realpath 缓存。
open_basedir
只是一种额外的安全网,它绝不是全面的,因此在需要安全性时不能依赖它。
doc_root
字符串PHP 在服务器上的“根目录”。仅在非空时使用。如果 PHP 没有使用 FORCE_REDIRECT 编译,则应该在任何 Web 服务器(IIS 除外)下以 CGI 运行 PHP 时设置 doc_root。另一种方法是使用下面的 cgi.force_redirect 配置。
user_ini.cache_ttl
整数
user_ini.filename
字符串
user_dir
字符串用户主目录中用于 PHP 文件的目录的基名,例如 public_html 。
extension_dir
字符串extension
字符串PHP 启动时要加载哪些动态加载的扩展。
zend_extension
字符串PHP 启动时要加载的动态加载的 Zend 扩展(例如 XDebug)的名称。
cgi.check_shebang_line
布尔值控制 CGI PHP 是否检查运行脚本顶部以 #!
(shebang)开头的行。如果脚本支持作为独立脚本和通过 PHP CGI 运行,则可能需要此行。如果启用此指令,则 CGI 模式下的 PHP 将跳过此行并忽略其内容。
cgi.discard_path
布尔值如果启用此选项,则可以安全地将 PHP CGI 二进制文件放置在 Web 树之外,并且人们将无法规避 .htaccess 安全性。
cgi.fix_pathinfo
布尔值为 CGI 提供真正的 PATH_INFO
/PATH_TRANSLATED
支持。PHP 之前的行为是将 PATH_TRANSLATED
设置为 SCRIPT_FILENAME
,并且不理解 PATH_INFO
是什么。有关 PATH_INFO
的更多信息,请参阅 CGI 规范。将其设置为 1
将导致 PHP CGI 修复其路径以符合规范。设置为零会导致 PHP 像以前一样运行。默认情况下将其打开。您应该修复您的脚本以使用 SCRIPT_FILENAME
而不是 PATH_TRANSLATED
。
cgi.force_redirect
布尔值在大多数 Web 服务器下以 CGI 运行 PHP 时,cgi.force_redirect 是必要的安全措施。如果未定义,PHP 默认情况下会启用它。您可以自担风险将其关闭。
注意:
Windows 用户:使用 IIS 时,必须关闭此选项。OmniHTTPD 或 Xitami 同样适用。
cgi.nph
布尔值如果启用 cgi.nph,它将强制 cgi 在每次请求时都发送 Status: 200。
cgi.redirect_status_env
字符串如果启用了 cgi.force_redirect,并且您没有在 Apache 或 Netscape (iPlanet) Web 服务器下运行,则可能需要设置一个环境变量名,PHP 将查找该变量名以知道可以继续执行。
注意:
设置此变量可能会导致安全问题,请先了解您在做什么。
cgi.rfc2616_headers
整数告诉 PHP 发送 HTTP 响应代码时使用哪种类型的标头。如果设置为 0,PHP 将发送 » RFC 3875 “Status:” 标头,Apache 和其他 Web 服务器都支持该标头。当此选项设置为 1 时,PHP 将发送符合 » RFC 2616 的标头。
如果启用此选项,并且您在 CGI 环境(例如 PHP-FPM)中运行 PHP,则不应使用标准 RFC 2616 样式的 HTTP 状态响应标头,而应使用其 RFC 3875 等效项,例如,不应使用 header("HTTP/1.0 404 Not found");,而应使用 header("Status: 404 Not Found");
除非您知道自己在做什么,否则请将其设置为 0。
fastcgi.impersonate
字符串IIS(基于 WINNT 的操作系统)下的 FastCGI 支持模拟调用客户端的安全令牌的功能。这允许 IIS 定义请求在其下运行的安全上下文。Apache 下的 mod_fastcgi 目前不支持此功能 (2002 年 3 月 17 日) 在 IIS 下运行时设置为 1。默认为零。
fastcgi.logging
布尔值使用 FastCGI 时启用 SAPI 日志记录。默认为启用日志记录。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
file_uploads | "1" | INI_SYSTEM |
|
upload_tmp_dir | NULL | INI_SYSTEM |
|
max_input_nesting_level | 64 | INI_PERDIR |
|
max_input_vars | 1000 | INI_PERDIR |
|
upload_max_filesize | "2M" | INI_PERDIR |
|
max_file_uploads | 20 | INI_PERDIR |
以下是配置指令的简短说明。
file_uploads
布尔值是否允许 HTTP 文件上传。另请参见 upload_max_filesize、upload_tmp_dir 和 post_max_size 指令。
upload_tmp_dir
字符串用于存储文件上传文件的临时目录。必须可由运行 PHP 的用户写入。如果未指定,PHP 将使用系统的默认值。
如果此处指定的目录不可写,则 PHP 将回退到系统的默认临时目录。如果 open_basedir 已启用,则必须允许系统默认目录才能成功上传。
upload_max_filesize
整数上传文件的最大大小。
post_max_size 必须大于此值。
当使用 int 时,值以字节为单位。也可以使用此常见问题解答中描述的简写符号。max_file_uploads
整数允许同时上传的文件的最大数量。提交时留空的上传字段不计入此限制。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
sql.safe_mode | "0" | INI_SYSTEM |
从 PHP 7.2.0 开始已移除 |
以下是配置指令的简短说明。
sql.safe_mode
布尔值如果启用,指定默认值的数据库连接函数将使用这些值代替任何用户提供的参数。有关默认值的详细信息,请参阅相关连接函数的文档。
此功能已于 PHP 7.2.0 中移除。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
windows.show_crt_warning | "0" | INI_ALL |
以下是配置指令的简短说明。
windows.show_crt_warning
bool启用此指令后,将显示 Windows CRT 警告。
使用 auto_prepend_file 时请小心。
当由 set_exception_handler() 设置的自定义异常处理程序处理未捕获的异常时,它会中断每个脚本的执行。
但是,如果具有未处理异常的脚本已由自动预先包含的脚本自动预先包含或包含,则主脚本将继续运行。
这可能会导致一些问题:当我们认为抛出异常会自动中断当前应用程序时,一大块代码仍然会运行。
关于 upload_tmp_dir 设置和 UNC 路径的说明
在 Windows 操作系统和 IIS FastCGI 上使用 PHP 时,如果需要将 UNC 路径用于网络驱动器上的文件夹作为 upload_tmp_dir 设置,则必须在 UNC 路径的前面使用三个 \ 字符。
Windows 和 PHP 将第一个斜杠用作转义字符,因此如果只使用两个斜杠,则它将传递只有一个反斜杠的 UNC 路径。这对于 UNC 路径无效,并且在上传文件时可能会遇到问题,例如提示“PHP 缺少临时文件夹”的错误。
正确
upload_tmp_dir = "\\\path\to\your\folder"
错误
upload_tmp_dir = "\\path\to\your\folder"
如果有人碰巧维护使用 utf-8 以外的字符集的旧应用程序,这可能会有所帮助。
根据文档,如果使用 `header()`,可以覆盖默认字符集。
假设 php.ini 将 default_charset 设置为“UTF-8”,但您需要旧版字符集,例如 ISO-8859-1。
但是,
<?php header('Content-Type: text/html; Charset=ISO-8859-1'); ?>
不会覆盖字符集,只会添加它,结果
是响应头类似于(注意两个字符集)
Content-Type:"text/html; Charset=ISO-8859-1;charset=UTF-8"
我发现默认字符集使用小写 `c` 很奇怪
与我的自定义字符集使用大写 `C` 相反。
解决方法是使用全小写字母_覆盖_字符集
以及单词“charset”
<?php header('content-type: text/html; charset=ISO-8859-1'); ?>
然后,响应头中的双字符集消失了,只剩下单个自定义字符集。
如果目录不存在或用户缺乏访问权限,则会收到误导性错误。
生效的 open_basedir 限制。文件(/tmp/php_session) 不在允许的路径内:/tmp/php_session
“如果 post 数据的大小大于 post_max_size…”
似乎更优雅的方法是比较 post_max_size 和 $_SERVER['CONTENT_LENGTH']。请注意,后者不仅包括上传文件的大小加上 post 数据,还包括多部分序列。Leo
如果您使用 Microsoft IIS Windows 并希望将 open_basedir 限制与多个目录一起使用,则必须在 IIS 的主配置 xml 文件 (C:\Windows\System32\inetsrv\config\applicationHost.config) 中将它们设置为单引号。在 IIS 10 中运行良好。
使用单引号和 ; 的多个文件(适用于 Windows)
"C:\php\php-cgi.exe|-d open_basedir='C:\Windows\Temp\;D:\mywebsite1\'"
只有一个目录在没有单引号的情况下运行良好
"C:\php\php-cgi.exe|-d open_basedir=D:\mywebsite1\"
在我的 IIS 主配置 xml 文件中,每个网站需要设置 2 个节点,并且定义必须相等
configuration\Location\system.webServer\handlers\add
configuration\system.webServer\fastCgi
我在 php.ini 中的“open_basedir=”字符串上遇到问题。此字符串写在 Apache2 的 VirtualHost Directory 指令中,并成功地重写了相同的 php.ini 设置!这是在 VestaCP 上发生的,但我认为这是一种常见的方法。祝你好运!
如果同时使用“include_path”指令和“open_basedir”,则文件搜索将*首先*命中 include 路径,然后再命中本地文件。但是,如果未使用“open_basedir”,则首先找到本地文件。例如,假设您在“/var/www/myfile.php”中有以下代码
<?php
require_once('config.php');
?>
此外,假设存在本地文件“/var/www/config.php”,并且还存在文件“/var/local/php/config.php”。
接下来,如果您的 php.ini 包含
include_path = /var/local/php/
通常,这将首先查找“/var/www/config.php”,如果找不到,则会尝试“/var/local/php/config.php”。
但是,如果您在 php.ini 中也包含此项
open_basedir = /var/www/:/var/local/php/
则 require 将反转搜索顺序,并加载“/var/local/php/config.php”,即使存在本地“config.php”文件。
此外,如果 include_path 包含不在 open_basedir 中的目录,则最终可能会出现严重错误。例如,将指令更改为
open_basedir = /var/www/:/var/local/includes/php/
现在,require 将首先从 include_path 中找到“/var/local/php/config.php”,尝试包含它,但由于 open_basedir 限制而无法包含它。