php.ini 配置选项设定范围
hanpy

记录一个同事给挖的坑~
php中的ini_set函数可以为一个配置选项设置值,但是并不是所有的配置都可以在代码中使用该函数设置

事情的起因是需要修改一下上传文件最大的限制,从8M修改为20M,因为同事写的代码没有测试就去做别的项目并且代码已经提交到git,所以在我接手的时候就以为是可以使用的,看到他在代码中写了类似下面的代码

1
2
3
4
5
6
7
8
9
<?php

ini_set("post_max_size", "20M");
ini_set("upload_max_filesize", "20M");

class UploadClass
{
// ...
}

折腾就是死活不生效,nginx的client_max_body_size配置也修改了,容器也销毁重建了…..,最后仔细一想就是下面的限制.

配置可被设定范围

一个配置选项是否可以在ini_set中进行设置,主要是取决于该设置是什么模式,手册中的每个指令都有其所属的模式。

模式 含义
PHP_INI_USER 可在用户脚本以及 .user.ini 中设定
PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL 可在任何地方设定

上面两个配置的模式是PHP_INI_PERDIR,所以必须在php.ini中修改才是会生效的

名字 默认 可修改范围
upload_max_filesize “2M” PHP_INI_PERDIR
post_max_size “8M” PHP_INI_PERDIR

PHP: php.ini 配置选项列表 - Manual