【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上の各ディレクティブごとの件数

項番分類ディレクティブ名件数86Fopen wrappersfrom2313Language Optionsengine12951Error handling and loggingerror_log8265Data Handlinginternal_encoding7935Error handling and loggingdisplay_errors7734Error handling and loggingerror_reporting7233Resource Limitsmemory_limit7064Data Handlingdefault_charset5482File Uploadsupload_max_filesize4060Data Handlingpost_max_size3929Miscellaneousexpose_php3669Paths and Directoriesinclude_path3637Error handling and logginglog_errors2630Resource Limitsmax_execution_time254Language Optionsshort_open_tag2387Fopen wrappersuser_agent208Language Optionsoutput_handler1784Fopen wrappersallow_url_fopen157Language Optionsoutput_buffering1480File Uploadsfile_uploads1461Data Handlingauto_prepend_file1283File Uploadsmax_file_uploads1236Error handling and loggingdisplay_startup_errors1115Language Optionsopen_basedir1066Data Handlinginput_encoding1067Data Handlingoutput_encoding1076Paths and Directoriescgi.fix_pathinfo106Language Optionsprecision927Language Optionszend.multibyte946Error handling and logginghtml_errors99Language Optionszlib.output_compression824Language Optionsrealpath_cache_size831Resource Limitsmax_input_time838Error handling and logginglog_errors_max_len855Data Handlingvariables_order862Data Handlingauto_append_file870Paths and Directoriesdoc_root885Fopen wrappersallow_url_include814Language Optionsserialize_precision768Data Handlingalways_populate_raw_post_data781File Uploadsupload_tmp_dir728Language Optionszend.script_encoding643Error handling and loggingtrack_errors647Error handling and loggingdocref_root648Error handling and loggingdocref_ext671Paths and Directoriesuser_dir672Paths and Directoriesenable_dl688Fopen wrappersdefault_socket_timeout689Fopen wrappersauto_detect_line_endings61php.ini Optionsuser_ini.filename510Language Optionszlib.output_compression_level511Language Optionszlib.output_handler516Language Optionsdisable_functions518Language Optionshighlight.string519Language Optionshighlight.comment520Language Optionshighlight.keyword521Language Optionshighlight.default522Language Optionshighlight.html523Language Optionsignore_user_abort525Language Optionsrealpath_cache_ttl526Language Optionszend.enable_gc532Resource Limitsmax_input_nesting_level539Error handling and loggingignore_repeated_errors541Error handling and loggingreport_memleaks542Error handling and loggingreport_zend_debug549Error handling and loggingerror_prepend_string550Error handling and loggingerror_append_string557Data Handlingregister_argc_argv558Data Handlingauto_globals_jit559Data Handlingenable_post_data_reading563Data Handlingdefault_mimetype52php.ini Optionsuser_ini.cache_ttl45Language Optionsasp_tags412Language Optionsimplicit_flush413Language Optionsunserialize_callback_func417Language Optionsdisable_classes440Error handling and loggingignore_repeated_source444Error handling and loggingxmlrpc_errors445Error handling and loggingxmlrpc_error_number453Data Handlingarg_separator.output454Data Handlingarg_separator.input456Data Handlingrequest_order478Paths and Directoriesfastcgi.logging479Paths and Directoriescgi.rfc2616_headers452Error handling and loggingwindows.show_crt_warning373Paths and Directoriescgi.force_redirect374Paths and Directoriescgi.nph375Paths and Directoriescgi.redirect_status_env377Paths and Directoriesfastcgi.impersonate3

结束了!

广告
将在 10 秒后关闭
bannerAds