phpinfo()不直接显示“文件路径”字样,需查看Loaded Configuration File、Scan this dir for additional .ini files、DOCUMENT_ROOT、SCRIPT_FILENAME、include_path和extension_dir等字段定位配置与脚本路径。

会显示,但默认不直接标出“文件路径”字样,需要看特定字段。 phpinfo() 本身不输出当前脚本路径,但它暴露了大量与路径相关的配置项,关键在于知道看哪几处。
PHP 配置中的路径字段(Loaded Configuration File、Scan this dir for additional .ini files)
这两个字段直接告诉你 PHP 加载了哪些配置文件,是定位 php.ini 实际位置的核心依据。
-
Loaded Configuration File:显示正在生效的主php.ini路径;若值为none,说明没加载任何php.ini,所有配置走编译默认值 -
Scan this dir for additional .ini files:显示 PHP 会扫描加载额外 ini 文件的目录(如/etc/php/8.1/cli/conf.d/),这些目录下的 .ini 文件也会被合并生效 - 注意:CLI 和 Web SAPI(如 Apache 或 FPM)可能加载不同
php.ini,必须在对应环境下运行phpinfo()(比如通过浏览器访问 vs 执行php -i)
DOCUMENT_ROOT 和 SCRIPT_FILENAME(Web 环境下定位当前脚本位置)
这两个变量不在 phpinfo() 的“核心配置”区块,而是归类在 $_SERVER 变量列表里,需展开 “Environment” 或 “PHP Variables” 查看。
-
DOCUMENT_ROOT:Web 服务器配置的网站根目录(如/var/www/html) -
SCRIPT_FILENAME:当前执行的 PHP 脚本的绝对路径(如/var/www/html/info.php),这是最直接的“当前文件在哪”的答案 - 如果
SCRIPT_FILENAME显示为空或不正确,大概率是 Web 服务器未正确传递该 CGI 变量(常见于 Nginx + PHP-FPM 配置遗漏fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;)
include_path 和 extension_dir(扩展与类库路径依赖)
这两个值影响 require、include 和扩展加载行为,查路径问题时经常要核对。
立即学习“PHP免费学习笔记(深入)”;
-
include_path:PHP 查找require/include文件时搜索的目录列表(如.:/usr/share/php),多个路径用冒号(Linux/macOS)或分号(Windows)分隔 -
extension_dir:PHP 扩展(.so 或 .dll)存放目录,如果手动复制了redis.so却报unable to load dynamic library,先确认这里路径是否指向实际存放位置 - 修改
include_path不建议改php.ini,更安全的做法是在代码里用set_include_path()或 Composer 的自动加载
__FILE__ . "\n"; echo 'Document root: ' . ($_SERVER['DOCUMENT_ROOT'] ?? 'not set') . "\n"; echo 'Include path: ' . get_include_path() . "\n"; ?>
真正容易被忽略的是:同一台机器上 CLI、Apache、FPM 三套环境的 phpinfo() 输出几乎肯定不同。查路径问题前,务必确认你看到的是哪个 SAPI 的结果——否则对着错误的 Loaded Configuration File 路径折腾半天,实际生效的 php.ini 根本不在那儿。











