使用 Ansible 更改 PHP 的 post_max_size 和 upload_max_filesize

使用 Ansible 更改 PHP 的 post_max_size 和 upload_max_filesize

有没有办法使用Ansiblepost_max_sizeupload_max_filesizephp.ini版本无关的方式更改两个著名的 PHP 变量?

我没有找到任何涉及这一点的文献,而且它似乎对我来说很重要,因为没有公司,更不用说大型公司,会只允许2M这两个变量的默认限制值(我认为这是自 PHP 诞生以来就很普遍的)。

答案1

而不是使用正则表达式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

答案2

好的。这引起了我的兴趣,这就是我的想法:

---
- 主持人:全部
  变成:是

  任务:
    - name: 获取 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 : 正常=4 更改=0 无法访问=0 失败=0   

在生产环境中,您可以进行更多测试,并set_fact尽早将路径分配给变量。这只是一个 POC。

另外,当然可以根据自己的喜好调整文件大小!

相关内容