Centos6

如何通過 Ansible PHP 角色覆蓋之前定義的 PHP 值?

  • April 21, 2016

我正在嘗試使用以下行(作為配置腳本的一部分)通過geerlingguy 的 Ansible Role for PHPopcache.max_accelerated_files將覆蓋 PHP 的設置應用到geerlingguy/centos6的 VM 上:

php_opcache_enabled_in_ini: false
php_opcache_enable_cli: 1
php_opcache_max_accelerated_files: "4096"

這似乎工作(如10-opcache.ini創建/etc/php.d)為:

opcache.enable=1
opcache.enable_cli=1
opcache.max_accelerated_files=8192

但是該選項仍然沒有被 PHP 覆蓋:

$ php -i | grep opcache.max_accelerated_files
opcache.max_accelerated_files => 4000 => 4000

這是因為opcache.ini已經設置了這個設置:

$ grep ^opcache.max_accelerated_files opcache.ini 
opcache.max_accelerated_files=4000

並且不知何故它優先於10-opcache.ini.

我嘗試將預設值更改php_opcache_conf_filenameopcache.ini,但隨後10-opcache.ini被覆蓋並清除了以前的內容(包括zend_extension=opcache.so行),因此 OPcache 被禁用。

如何使用 PHP 的 ansible 角色更改 PHP 設置,以便正確應用設置,這將覆蓋以前的值?

我認為這是因為10-opcache.iniopcache.ini字母順序排列,這與載入順序有關。所以配置opcache.ini是最後一個應用的。

您可以將文件名更改為類似zzz-opcache.ini或我喜歡的方式zzz-custom.ini在一個文件中添加所有自定義配置。

另一方面,為什麼你會有兩個用於 opcache 的文件?你能把它們合二為一嗎?

引用自:https://serverfault.com/questions/771484