修改php.ini如何生效,修改php.ini不生效

修改php.ini不生效,后来发现,我修改的php.ini生效的地方是local value,在命令行不生效,但是在web请求中可以生效。

1.关于 local value 和 master value

第一个是局部值,第二个是全局值。 局部值将覆盖全局值,局部值常在 php 文件设置或者.htaccess 、.user.ini 或者其他非 php.ini 的文件中设置,而全局值在 php.ini 中或者编译时设置。 局部值优先级较高。

2.按理说,php.ini 的值应该在 master 里。全局生效,现在出现在 local 里,命令行无效,是因为命令行未加载 php.ini?(现在只能 web 请求生效。)

2.1 举例:命令行执行 php -r echo ini_get()时还是获取的 master value

2.2 举例:web 请求 a.com/a.php ,a.php 中写 ini_get(),获取的是 local value

3.环境:windows,docker,lnmp 一键环境,PHP 7.3.11 (cli) (built: Apr 6 2020 14:03:55) ( NTS )。nginx/1.16.1 。CentOS Linux release 7.7.1908 (Core)

4.phpinfo如图:

我设置的129M出现在了local value中。

4982f4440f3d

image.png

4982f4440f3d

image.png

5.异常情况看图,命令行执行这个文件,和走nginx,完全是两个值:

5.1命令行:

4982f4440f3d

image.png

5.2同样的代码在浏览器:

4982f4440f3d

image.png

6.临时解决方法:

宝藏命令,php -d,可以指定PHP以什么值去执行

php -d memory_limit=512M /usr/local/bin/composer install

6.1实战如图:

4982f4440f3d

image.png

7.永久解决方法:

7.1 解决了,淦!配置有缓存,不知道缓存到哪了!!!

7.2 我在 php-fpm.conf 最后一行追加编写了 php_value[memory_limit] = 25M 后,触发了缓存更新机制,php.ini 神奇的生效了,现在 local value 和 master value 一致了。

memory_limit => 149M => 149M

8.总结

首先执行php -ini查看配置文件位置,修改php.ini不生效后查看php-fpm.conf和www.conf文件是否有覆盖操作。如果都没有,查看nginx.conf有没有相关的fastcgi配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值