You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询当前运行PHP脚本已加载的.user.ini文件?

查看已加载的.user.ini文件的方法

你的思路基本是正确的——PHP目前没有提供直接返回已加载.user.ini文件路径的内置函数,最可靠的方式就是遍历当前脚本所在目录到文档根目录的所有层级,检查是否存在该文件。

具体实现逻辑

  • 从当前脚本的目录出发(用__DIR__可直接获取)
  • 逐层向上遍历父目录,直到到达文档根目录(通过$_SERVER['DOCUMENT_ROOT']获取)
  • 对每个目录检查.user.ini是否存在,存在则记录路径

示例代码

function findLoadedUserIniFiles() {
    $currentDir = realpath(__DIR__);
    $docRoot = realpath($_SERVER['DOCUMENT_ROOT']);
    $iniFiles = [];

    while ($currentDir && $currentDir !== $docRoot) {
        $iniPath = $currentDir . DIRECTORY_SEPARATOR . '.user.ini';
        if (file_exists($iniPath)) {
            $iniFiles[] = $iniPath;
        }
        $parentDir = dirname($currentDir);
        // 防止到达系统根目录后无限循环
        if ($parentDir === $currentDir) {
            break;
        }
        $currentDir = $parentDir;
    }

    // 最后检查文档根目录的.user.ini
    $rootIniPath = $docRoot . DIRECTORY_SEPARATOR . '.user.ini';
    if (file_exists($rootIniPath)) {
        $iniFiles[] = $rootIniPath;
    }

    return $iniFiles;
}

// 使用示例
$loadedUserInis = findLoadedUserIniFiles();
print_r($loadedUserInis);

补充说明

  • PHP加载.user.ini的规则是:请求PHP文件时,从该文件所在目录开始向上遍历到文档根目录,加载所有存在的.user.ini文件,越靠近当前脚本的目录,配置优先级越高(后加载的同配置项会覆盖先加载的)。
  • 注意.user.ini的生效受user_ini.filename(默认值.user.ini)和user_ini.cache_ttl(默认缓存300秒)影响,修改文件后需等待缓存过期,或重启PHP-FPM(FastCGI模式下)才能立即生效。

内容的提问来源于stack exchange,提问作者Shores

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 19:12:31