php-fpm设置扩展无效 _解决_ phpinfo中Loaded Configuration File 为 none

本文介绍了解决PHP安装过程中未找到php.ini文件的方法,包括如何从源码包中复制php.ini-production文件并设置正确的路径,以及如何配置php-fpm以指定php.ini的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/haitun312366/article/details/38639129

今天在安装php后发现没有php.ini文件

[plain]  view plain  copy
  1. ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --enable-fpm  

在安装目录下搜了一下也没发现

[plain]  view plain  copy
  1. find ./ -name '*ini*'  

然后就查看了phpinfo信息,但是

[plain]  view plain  copy
  1. [root@localhost php]# php -i | grep ini  
  2. Configuration File (php.ini) Path => /usr/local/php/etc/  
  3. Scan this dir for additional .ini files => (none)  
  4. Additional .ini files parsed => (none)  
  5. user_ini.cache_ttl => 300 => 300  
  6. user_ini.filename => .user.ini => .user.ini  

没有Loaded Configuration File的信息。

没有php.ini文件你可以去php源码包中拷贝过来:

1、直接把源码包中的php.ini-production拷贝到--with-config-file-path设置的路径下/usr/local/php/etc/php.ini(适用于php命令行,nginx访问)

命令行:

[plain]  view plain  copy
  1. [root@localhost php]# php -i | grep ini  
  2. Configuration File (php.ini) Path => /usr/local/php/etc/  
  3. Loaded Configuration File => /usr/local/php/etc/php.ini  


nginx:

Configuration File (php.ini) Path /usr/local/php/etc/
Loaded Configuration File /usr/local/php/etc/php.ini


2、php-fpm指定php.ini路径(适用于nginx访问)

[plain]  view plain  copy
  1. /usr/local/php/sbin/php-fpm -y /etc/php-fpm.conf -c /etc/php.ini  

命令行:

[plain]  view plain  copy
  1. [root@localhost php]# php -i | grep ini  
  2. Configuration File (php.ini) Path => /usr/local/php/etc/  
  3. Scan this dir for additional .ini files => (none)  

nginx:

Configuration File (php.ini) Path /usr/local/php/etc/
Loaded Configuration File /etc/php.ini
### PHP.ini 配置不生效的原因分析 PHP 的 `php.ini` 文件是控制 PHP 运行行为的核心配置文件。如果修改后的 `php.ini` 不生效,通常可能是以下几个原因造成的: #### 1. **加载错误的 `php.ini` 文件** 当运行 `phpinfo()` 函数时,会显示两个路径:一个是 `Configuration File (php.ini) Path` 表示 PHP 查找 `php.ini` 文件的位置;另一个是 `Loaded Configuration File` 显示当前正在使用的具体 `php.ini` 路径[^1]。如果 `Loaded Configuration File` 值为空,则表示未找到有效的 `php.ini` 文件。 #### 2. **存在多个 `php.ini` 文件** 如果系统中有多个 `php.ini` 文件(例如分别位于 Apache 和 PHP 目录下),可能会导致冲突。某些集成环境(如 WAMP 或 XAMPP)会在不同位置放置多份 `php.ini` 文件,并默认使用特定的一个。因此即使修改了一个文件,也可能不会被应用到实际环境中[^2]。 #### 3. **其他配置文件的影响** 自 PHP 5.3 开始引入了 `user.ini` 功能,允许每个站点拥有独立的配置文件。这些文件会被优先解析并覆盖全局的 `php.ini` 设置。如果某个站点目录下的 `user.ini` 存在且设置了不同的参数,可能导致全局配置失效[^3]。 #### 4. **缓存机制影响** 某些 Web 服务器或 PHP-FPM 使用了缓存技术来提高性能。在这种情况下,即使更新了 `php.ini` 并重启服务,旧的配置可能仍然有效直到缓存过期或者手动清除缓存。 --- ### 解决方案 针对上述问题,以下是具体的解决办法: #### 方法一:确认正确的 `php.ini` 文件 通过调用 `phpinfo()` 来验证哪个 `php.ini` 正在被加载。如果没有加载任何配置文件 (`Loaded Configuration File` 为 none),则需要将标准的 `php.ini-development` 或 `php.ini-production` 复制重命名为 `php.ini` 放入正确路径中[^1]。 ```bash cp /path/to/php.ini-development /usr/local/lib/php.ini ``` #### 方法二:检查是否存在多重配置文件 对于像 WAMP 这样的集成开发环境,可能存在两份甚至更多 `php.ini` 文件。确保只在一个地方进行更改即可解决问题。例如,在 WAMP 中,应编辑 Apache 下面的 `php.ini` 文件而不是 PHP 主目录中的那份[^2]。 #### 方法三:排查 `user.ini` 影响 查看是否有启用 `user_ini.filename` 参数以及对应的自定义 INI 文件存在于项目根目录里。如果有,请调整它们的内容使其与预期一致或将此功能禁用掉[^3]。 ```ini ; 禁用 user.ini 加载 user_ini.filename = ``` #### 方法四:清理缓存重新启动服务 有时尽管已经更正了所有的配置项但仍看不到效果,这是因为一些中间层比如 OPcache 缓存住了之前的设定值。此时应当彻底停止再开启相关进程以刷新状态。 ```bash sudo service apache2 restart sudo systemctl restart php7.x-fpm # 替换为对应版本号 ``` --- ### 示例代码片段 以下是一个简单的脚本用于打印当前已激活的各项重要设置及其来源: ```php <?php echo "<pre>"; print_r(ini_get_all()); ?> ``` 它可以帮助开发者快速定位哪些选项是从哪里继承来的。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值