如果您不知道“PHP_INI_PERDIR”或“PHP_INI_USER”是什么,或者它们与设置 .user.ini 文件有何关系,请查看 ini.list 页面:https://php.net/manual/en/ini.list.php
基本上,“可更改”列中标记为 PHP_INI_SYSTEM 的任何内容都无法在 .user.ini 文件中设置(因此请停止尝试)。它只能在主 php.ini 级别设置。
PHP 支持基于每个目录的配置 INI 文件。这些文件 *仅* 由 CGI/FastCGI SAPI 处理。此功能使 PECL htscanner 扩展程序过时。如果您正在将 PHP 作为 Apache 模块运行,请使用 .htaccess 文件以获得相同的效果。
除了主要的 php.ini 文件外,PHP 还会扫描每个目录中的 INI 文件,从请求的 PHP 文件的目录开始,一直向上扫描到当前文档根目录(如 $_SERVER['DOCUMENT_ROOT'] 中设置)。如果 PHP 文件位于文档根目录之外,则只扫描其目录。
只有具有模式 INI_PERDIR
和 INI_USER
的 INI 设置才会在 .user.ini 样式的 INI 文件中被识别。
两个新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl 控制用户 INI 文件的使用。
user_ini.filename 设置 PHP 在每个目录中查找的文件名;如果设置为空字符串,则 PHP 根本不扫描。默认值为 .user.ini
。
user_ini.cache_ttl 控制多久重新读取一次用户 INI 文件。默认值为 300 秒(5 分钟)。
如果您不知道“PHP_INI_PERDIR”或“PHP_INI_USER”是什么,或者它们与设置 .user.ini 文件有何关系,请查看 ini.list 页面:https://php.net/manual/en/ini.list.php
基本上,“可更改”列中标记为 PHP_INI_SYSTEM 的任何内容都无法在 .user.ini 文件中设置(因此请停止尝试)。它只能在主 php.ini 级别设置。
“如果您使用的是 Apache,请使用 .htaccess 文件以获得相同的效果。”
澄清一下,这仅适用于 Apache 模块模式。如果您在 Apache CGI/FastCGI 服务器上的 .htaccess 中放置 php 指令,这将导致服务器出现 500 错误。因此,您不幸无法创建同时适用于这两种托管类型的配置,至少没有简单的方法。
由于 .user.ini 从公共目录读取,因此其内容将提供给任何请求它的人,并可能向他们显示敏感的配置设置。
将以下几行添加到您的 .htaccess 文件中以阻止对它的请求
<Files ".user.ini">
Require all denied
</Files>
针对年轻玩家的陷阱,并非说我自己也是个年轻玩家。
user_ini.cache_ttl 的默认设置为 300 秒,这意味着它每 5 分钟刷新一次。如果您正在调整 .user.ini 中的设置,则可能需要长达 5 分钟才能看到实验结果。
如果您无权访问 php.ini 以更改此设置,则您必须学会耐心等待。
对于正在寻找示例的人…… .user.ini 应格式化为简单的 [KEY]=[VALUE]\n 集列表。例如,一个单行 .user.ini 文件,其唯一作用是将最大允许上传文件大小更改为 5MB 是
upload_max_filesize="5M"
这篇文章应该更清晰。
“.htaccess 样式的 INI 文件”对我来说意味着 ini 设置必须遵循 .htaccess 中使用的语法,但事实并非如此!
您必须使用
register_globals=on
而不是
php_flag register_globals on
此外,如果您有很长的进程超时时间,则更改可能需要一段时间才能传播到所有进程。
重新启动 php-fpm 可以更快地得到答案 :)