天天看點

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

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

image.png

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

image.png

5.異常情況看圖,指令行執行這個檔案,和走nginx,完全是兩個值:

5.1指令行:

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

image.png

5.2同樣的代碼在浏覽器:

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

image.png

6.臨時解決方法:

寶藏指令,php -d,可以指定PHP以什麼值去執行

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

6.1實戰如圖:

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

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配置。