直接执行phpinfo()可输出完整PHP环境信息,但需Web服务器正确解析PHP文件;常见问题包括Nginx/Apache未配置PHP处理器、文件权限或路径错误;应临时存放于受控子目录、限制访问并用完即删;生产环境推荐用phpversion()、get_loaded_extensions()、ini_get()等函数按需获取信息。

直接在 Web 服务器上执行 phpinfo() 就能输出完整的 PHP 环境信息,但必须确保脚本能被 Web 服务正确解析,且不能暴露在生产环境。
为什么访问 phpinfo.php 页面却显示源码或 404
常见原因是 Web 服务器(如 Nginx 或 Apache)未将 .php 文件交由 PHP 解析器处理。
- Nginx 需确认配置中包含类似
fastcgi_pass 127.0.0.1:9000或unix:/var/run/php/php8.1-fpm.sock的转发规则,并已启用index.php为默认索引 - Apache 要检查是否加载了
libphp.so或启用了mod_php,且.php后缀已关联到application/x-httpd-php - 文件权限错误(如
phpinfo.php不在 Web 根目录下,或权限为600导致 Web 进程无法读取)也会导致 403 或空白响应
如何安全地创建并访问 phpinfo 页面
不要把 phpinfo.php 放在公开可访问路径(如网站根目录),更别用默认文件名。临时使用时应加访问控制。
- 把文件放在 Web 根目录的子目录里,比如
/var/www/html/debug/,再配合服务器配置限制 IP 或加密码 - 内容只写最简版本:
- 若需限制仅本地访问,Nginx 可加
allow 127.0.0.1; deny all;;Apache 可用 - 用完立刻删除该文件——
phpinfo()会泄露PHP_INI_SYSTEM级配置、扩展列表、环境变量甚至部分绝对路径
phpinfo() 的替代方案:按需获取特定信息
生产环境禁用 phpinfo() 时,可用内置函数分项查询,避免信息过度暴露。
立即学习“PHP免费学习笔记(深入)”;
- 查看 PHP 版本:
PHP_VERSION常量或phpversion() - 列出已加载扩展:
get_loaded_extensions(),可过滤关键项如in_array('curl', get_loaded_extensions()) - 查某个配置项值:
ini_get('upload_max_filesize'),注意它只返回PHP_INI_USER和PHP_INI_PERDIR级别的值;PHP_INI_SYSTEM项需用ini_get_all()并检查access字段 - 获取当前 SAPI 类型:
php_sapi_name()(如apache2handler、fpm-fcgi、cli),这对判断运行上下文很关键
真正麻烦的不是调用 phpinfo(),而是它输出的信息太多又太细——你得知道哪一行对应哪个配置项,比如 Loaded Configuration File 行告诉你实际生效的 php.ini 路径,而这个路径在不同系统上可能位于 /etc/php/8.1/cli/php.ini 或 /usr/local/etc/php/8.2/php.ini,稍不注意就改错了文件。











