PHP INI 配置

简介

PHP INI (Initialization) 是一种用于设置和调整 PHP 运行时的配置选项的机制。这些配置选项对于 PHP 应用程序的性能、安全性和功能具有关键作用,因此正确理解并适当地管理它们是非常重要的。本文档旨在为您提供深入理解和管理 PHP INI 配置的指导。

基础知识

PHP INI 文件位置

PHP INI 配置由一个或多个 INI 文件定义,这些文件包含了一系列的键值对,每一对代表一个配置选项。根据您的操作系统和服务器环境不同,PHP INI 文件可能位于不同的位置。

通常,您可以在 PHP 命令行界面中使用 php --ini 命令来查找加载的配置文件:

$ php --ini
Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini
Scan for additional .ini files in: /etc/php/7.4/cli/conf.d
Additional .ini files parsed:      /etc/php/7.4/cli/conf.d/10-opcache.ini,
/etc/php/7.4/cli/conf.d/10-pdo.ini,
...

在上述示例中,主要的 INI 文件位于 /etc/php/7.4/cli/php.ini,而附加的 INI 文件位于 /etc/php/7.4/cli/conf.d/ 目录下。

INI 语法规则

INI 文件遵循一种简单的键值对格式,其中每行包含一个配置选项及其相应的值:

directive = value
  • directive: 配置指令或设置的名称。
  • value: 配置指令所对应的值。

注意,每行只能包含一个配置选项,并且在等号两侧不允许有空格。

INI 文件分层结构

PHP INI 文件可以按照一定的优先级进行加载和解析,形成分层结构。通常,这些文件被分为三个层次:

  1. 系统配置: PHP 安装时自带的默认 INI 文件(例如 php.ini-development)。
  2. 全局配置: 服务器级别的 INI 文件,影响所有运行在该服务器上的 PHP 应用程序。
  3. 本地配置: 针对单个应用程序或虚拟主机的 INI 文件。

这些层次从低到高依次覆盖,即更高层次的配置将覆盖低层次的相同配置选项。

PHP INI 常用配置指令

性能设置

  • memory_limit: 定义了 PHP 脚本可以使用的最大内存量,超过此限制将引发致命错误。默认值为 128MB,但对于需要处理大型数据集或长时间运行的应用程序,可能需要增加此值。
  • max_execution_time: 定义了 PHP 脚本可以执行的最长时间(秒)。如果脚本在超过此限制后仍未完成,将被终止并返回错误信息。默认值为 30 秒,对于 CPU 密集型任务或处理大型数据集的应用程序,可能需要增加此值。
  • post_max_size: 定义了通过 POST 方法提交到 PHP 脚本的最大数据量。默认值为 8MB,但对于处理文件上传或大型表单数据的应用程序,可能需要增加此值。
  • upload_max_filesize: 定义了通过 HTTP POST 方法上传到 PHP 脚本的最大文件大小。默认值为 2MB,但对于允许用户上传较大文件的应用程序,可能需要增加此值。

安全设置

  • disable_functions: 定义了一系列禁用的函数,这些函数将不会在 PHP 脚本中执行。通过禁用危险或不必要的函数,可以增强应用程序的安全性。
  • allow_url_fopen: 控制是否允许 PHP 从远程 URL 打开文件流。默认情况下,此选项被启用,但在处理不受信任的用户输入时,应将其禁用以防止远程文件包含攻击等漏