【PHP】整合php.ini指令
■ 起初
● 关于这篇文章提到的引用
除非另有特别说明,以下内容是从PHP官方手册(以下简称PHP手册)中引用的。
● 关于本文中提到的默认值
默认值是指在PHP手册中记载的值,在下面的说明中提到。
这些默认值是在php.ini文件无法加载时使用的。
请注意,这并不意味着未经编辑的php.ini中的设定值。
● 关于在这篇文章中提到的php.ini
这篇文章中关于php.ini的例子是在php7.0.24中捆绑的,不是推荐值。
● 关于本文未涉及的指令
本文未涵盖 Module Settings 指令(例如 Date、mbstring、Session 等)。
具体而言,只涉及 PHP 核心 php.ini 指令,其说明可参考手册中的 PHP: Core php.ini Directives – Manual 以及 PHP: Runtime Configuration – Manual 所列的指令。
由于从捆绑的php.ini文件(php7.0.24版本)中提取指令,所以不处理过时或更新的指令。
■ 在Qiita上经常出现的php.ini指令
到20171023時點為止,在Qiita網站上搜索到的超過10個的指令,我們將按照數量由多到少的方式列舉出來,略過其中一些。
▼ 错误日志 (字符串)
这是记录脚本错误的文件名。
・ 默认值:null
・ 示例设置:根据环境,例如”/var/log/php_error.log”。
;error_log = php_errors.log
;error_log = syslog
▼ 内部编码 (字符串)
在PHP 5.6.0及以上版本中可用。此设置用于多字节模块如mbstring或iconv。
・默认: “”
・设置示例:(不进行设置)
;internal_encoding =
如果指定了空字符串,则将使用default_charset作为参考,所以如果要重复相同的内容,可以不进行设置。关于input_encoding和output_encoding,也是一样的。
另外,从PHP 5.6.0开始,mbstring.internal_encoding、mbstring.http_input和mbstring.http_output被弃用。
▼显示错误 (字符串)
确定是否将错误作为HTML输出的一部分输出到屏幕上。
・默认值:”1″
・设定示例:开发环境设定为”1″(开启),生产环境设定为”0″(关闭)
display_errors = Off
▼ error_reporting (整数类型)
设置错误输出级别。
・ 默认值:null
・ 设置示例:-1(将输出所有错误)
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
▼ 内存限制 (整数,或缩写形式)
用字节指定脚本可以选择的最大内存量。
• 默认值为 “128M” (PHP >= 5.2)
• 示例设置:根据环境设定(-1代表无限制)
memory_limit = 128M
在开始时,不要设置一个过大的值,这样做的话就不会遇到Fatal error: Out of memory的问题了。但是在修改php.ini之前,最好先检查并修复相关部分的代码,这样能更快地解决问题并获得幸福。
▼ 默认字符集 (字符串)
如果没有被header()函数覆写,我们将使用这个作为从PHP发送的Content-Type头部的默认值。
・默认设置为:”UTF-8″
・示例设置:”UTF-8″(不改变)
default_charset = "UTF-8"
如果无意中处理非UTF-8字符编码,可能会背负起悲伤的危险。
▼ 上传文件最大大小 (整数,或可省略)
上传文件的最大尺寸。
・ 默认设置:”2M”
・ 示例设置:根据环境调整
upload_max_filesize = 2M
在使用PHP上传文件时,例如在Red Hat系列系统上,可能需要使用chcon -R -t httpd_sys_rw_content_t命令指定上传目标文件夹。
▼ post_max_size(整数,或简写形式):
设置POST数据的最大允许大小。
若要上传大文件,则需要将该值设置为大于upload_max_filesize的值。
通常情况下,memory_limit应该大于post_max_size。
・ 默认设置:“8M”
・ 设置示例:根据环境进行调整
post_max_size = 8M
▼暴露_php (布尔值)
将PHP的服务器安装公开给全世界,并且将PHP的版本包含在HTTP头部(例如 X-Powered-By: PHP/5.3.7)。
・ 默认选项: “1”(开启)
・ 设置示例: “0”(关闭)
expose_php = On
由于只考虑到On时会有坏事发生,而不会有好事发生,所以一定要将其设为”0″(关闭)。
▼ 包含路径(字符串)
需要使用require、include、fopen()、file()、readfile()以及file_get_contents()函数来指定文件搜索的目录列表。
默认值:”.;/path/to/php/pear”
设置示例:根据环境”.:/usr/local/lib/php”等应进行相应的配置。
;include_path = ".:/php/includes"
;include_path = ".;c:\php\includes"
▼ 记录错误日志 (字符串)
指定此选项可将错误消息记录到服务器的错误日志或error_log中。此选项根据服务器的不同而有所不同。
・ 默认:”0″(关闭)
・ 设置示例:”1″(打开)
log_errors = On
▼ 最大执行时间(整数)
请以秒为单位指定脚本被解析器强制终止之前允许的最长时间。
・ 默认值:30
・ 设置示例:根据环境调整
max_execution_time = 30
从一开始就不要设定一个过大的值,如果遭到”Fatal error: Maximum execution time of n seconds exceeded”的怒火,就应该审查数值。但是,在修改php.ini之前,考虑直接修改相关代码以解决问题,这样肯定会更开心。
▼ 短标签开启 (布尔值)
设置是否启用 PHP 标签的缩写形式(<? ?>)。
・ 默认选项:「1」(开启)
・ 设置示例:「0」(关闭)
short_open_tag = Off
▼ 输出处理器 (字符串)
可以将脚本的所有输出重定向到函数。
此指令仅可使用内置函数。
・ 默认值:null
・ 设置示例:根据需要选择ob_gzhandler、mb_output_handler等
;output_handler =
是否启用allow_url_fopen(布尔值)
你可以将脚本的所有输出重定向到函数中。
・ 默认值为:”1″(开启)
・ 设定示例:根据需要,如果不需要的话,请务必设定为”0″(关闭)
allow_url_fopen = On
如果您在PHP中处理HTTP文件,例如在Red Hat系列中,可能需要执行 setsebool httpd_can_network_connect 1。另外,虽然这里不涉及到,但如果不需要的话,确保 allow_url_include 必须设置为”0″(Off),这一点很重要。
▼ output_buffering (布尔值/整数)
通过将此指令设置为’On’,可以启用所有文件的输出缓冲。如果要限制缓冲区的大小至特定大小,可以使用最大字节数(例如:output_buffering=4096)作为此指令的值,而不是使用’On’。
・ 默认设置为”0″(关闭)。
・ 设置示例:根据需要进行调整。
output_buffering = 4096
PHPのheader関数の前で出力しちゃダメ、本当?
https://qiita.com/chinka/items/d63a4d0f2c4e5e794284
上述的文章很易懂。
▼ 文件上传(布尔值)
是否启用HTTP文件上传。
・ 默认选项:”0″(关闭)
・ 设置示例:根据需要,若不需要就务必设为”0″(关闭)
file_uploads = On
▼ 自动预加载文件 (字符串)
在指定主文件之前,要指定自动解析文件的名称。
・ 默认值: “”
・ 示例设置:根据需要
auto_prepend_file =
对应的指令是 auto_append_file。
太字部分,将日本PHP手册中的『付加される』部分翻译为英文版中的『parsed』。
▼ 显示启动错误 (布尔值)
在PHP的启动过程中,即使将display_errors设置为on,发生的错误也不会显示。除了调试时,强烈建议将display_startup_errors设置为off。
・默认值:”1″
・设置示例:在开发环境中为”1″(开启),在生产环境中为”0″(关闭)
display_startup_errors = Off
换句话说,就是要显示在PHP启动序列中发生的错误。
▼ open_basedir (字符串)
将可以通过PHP访问的文件限定在指定的目录树中,包括文件自身。
・默认值:null
・设置示例:根据环境,如”/var/www/http”等,如果可能,请务必指定
;open_basedir =
有时候可以防止目录遍历。
■ 2017年10月23日時点でのQiita上の各ディレクティブごとの件数
结束了!