loaded configuration file: (none)说明php未加载任何php.ini文件,全部使用内置默认值,display_errors、extension_dir等配置均不生效;cli与web环境分别需用php --ini和phpinfo()确认各自实际加载路径。

PHP 显示 Loaded Configuration File: (none),说明当前运行环境没有加载任何 php.ini 文件,所有配置都走 PHP 内置默认值——这意味着你改的 display_errors、extension_dir、date.timezone 等全部不生效。
确认实际生效的配置文件路径
不同运行方式加载的配置文件完全不同,不能混用:
-
命令行(CLI)环境:执行
php --ini,看 Loaded Configuration File 这一行。若为(none),说明 CLI 没读到 php.ini。 -
Web 环境(如 Nginx + PHP-FPM 或 Apache):新建一个
info.php,内容为<?php phpinfo(); ?>,通过浏览器访问,只看页面顶部「PHP Core」区块里的 Loaded Configuration File 字段——这才是 Web 请求真正用的配置文件。 - 注意:Configuration File (php.ini) Path 只是 PHP 的“查找目录”,不是实际加载路径;Scan for additional .ini files 是额外加载目录,也不代表已加载。
检查 php.ini 是否存在且位置正确
PHP 启动时会按编译时指定的路径找 php.ini,但这个路径未必是你以为的那个:
- 如果你是源码编译安装,回忆 configure 时是否加了
--with-config-file-path=/xxx。例如设为--with-config-file-path=/usr/local/php/etc,那 PHP 就只去该目录下找php.ini,不会自动查子目录或其它位置。 - 常见错位情况:
/usr/local/php/etc/php.ini存在,但 PHP 实际在找/usr/local/lib/php.ini(FPM 常见)或/usr/local/php/bin/php.ini(CLI 常见)。可用strace追踪真实查找路径:strace /usr/local/php/sbin/php-fpm -i 2>&1 | grep openat | grep php.ini - 确认文件名是
php.ini(不是php.ini-development或php.ini-production),且权限允许 PHP 进程读取(如chmod 644,属主可为 root,但组/其他需有读权限)。
手动指定 php.ini 路径启动服务
当配置路径不匹配又不便重编译时,可通过启动参数强制指定:
-
PHP-FPM:启动时加
-c参数,例如:/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -
CLI 测试:临时验证配置是否有效,可:
php -c /path/to/php.ini -i | grep "Loaded Configuration File" - 修改系统服务脚本(如 systemd unit 文件)或启动脚本,把
-c参数固化进去,避免每次重启失效。
补救:没有 php.ini 时的快速生成方法
若确认路径下确实没有 php.ini,不要手写,应使用官方模板:
- 进入 PHP 源码包目录(或已安装的
etc/目录),找php.ini-development或php.ini-production; - 复制一份并重命名为
php.ini:cp php.ini-production /usr/local/php/etc/php.ini; - 编辑该文件,设置关键项如:
date.timezone = "Asia/Shanghai"display_errors = Onerror_reporting = E_ALL; - 保存后重启对应服务(
systemctl restart php-fpm或service nginx reload),再用phpinfo()或php --ini验证是否显示真实路径。
不复杂但容易忽略:CLI 和 Web 的 php.ini 是两套体系,必须分别确认、分别修复。修完记得清空 OPcache(如有)、重启服务,再验证输出是否已变。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











