Debian

使用 Ansible 更改 PHP 的 post_max_size 和 upload_max_filesize

  • November 21, 2019

有沒有辦法使用 Ansible 以與版本無關的post_max_size方式更改兩個著名的 PHP 變數?upload_max_filesize``php.ini

我沒有找到任何關於這方面的文獻,這似乎與我有關,因為沒有公司,更不用說大型公司將只允許2M這兩個變數的預設限制值(我認為自 PHP 誕生以來就很普遍)。

行。這讓我很感興趣,這就是我想出的:

---
- 主持人:所有
變成:是

任務:
- 名稱:獲取 php.ini 的路徑
尋找:
路徑:/etc/php
文件類型:目錄
度假村:沒有
註冊:ini_path

- 名稱:更新 php.ini post_max_size
代替:
目標:“{{ ini_path.files[0].path }}/apache2/php.ini”
正則表達式:'^post_max_size.*$'
替換:'post_max_size = 20M'
備份:是

- 名稱:更新 php.ini upload_max_filesize
代替:
目標:“{{ ini_path.files[0].path }}/apache2/php.ini”
正則表達式:'^upload_max_filesize.*$'
替換:'upload_max_filesize = 20M'
備份:是

我要做的第一件事是使用該find模組來確定我們正在執行的 php 版本,當然還要將該結果註冊到ini_path. 這是有效的,因為唯一/etc/php的目錄是具有實際版本號的目錄:

ls /etc/php/
7.2

由於註冊的結果是一個python字典,我稍後將結果與完整路徑結合起來php_ini

"{{ ini_path.files[0].path }}/apache2/php.ini"

這樣我們就可以使用 playbook,儘管事先不知道我們正在執行哪個版本的 php(在合理範圍內,我們必須使用 apache2!)。

對我的測試伺服器(Ubuntu 18)的執行如下所示:

ansible-playbook update_phpini.yml -i "192.168.1.11," -kK
SSH 密碼:
SUDO 密碼[預設為 SSH 密碼]:

全部播放] ********************************************** ***********************

任務 [設置] ********************************************** ************************
好的:[192.168.1.11]

任務 [獲取 php.ini 的路徑] ******************************************* ************
好的:[192.168.1.11]

任務 [更新 php.ini post_max_size] ****************************************** **
好的:[192.168.1.11]

任務 [更新 php.ini upload_max_filesize] ******************************************
好的:[192.168.1.11]

播放回顧 ************************************************ ************************
192.168.1.11:ok=4 改變=0 不可達=0 失敗=0 

在生產環境中,您可以進行更多測試,並set_fact在早期使用將路徑分配給變數。這只是一個 POC。

另外,當然可以根據自己的喜好調整文件大小!!!

而不是正則表達式使用https://docs.ansible.com/ansible/latest/modules/ini_file_module.html

- name: set PHP memory limit
 become: yes
 ini_file:
   path: /etc/php.ini
   section: PHP
   option: memory_limit
   value: 512M

引用自:https://unix.stackexchange.com/questions/489281