修改php.ini不生效

作者: 怀老师 | 来源:发表于2020-05-27 22:07 被阅读0次

    修改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中。


    image.png
    image.png

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

    5.1命令行:
    image.png
    5.2同样的代码在浏览器:
    image.png

    6.临时解决方法:

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

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

    6.1实战如图:
    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配置。

    相关文章

      网友评论

        本文标题:修改php.ini不生效

        本文链接:https://www.haomeiwen.com/subject/sopgahtx.html