有没有办法使用Ansiblepost_max_size
以upload_max_filesize
与php.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。
另外,当然可以根据自己的喜好调整文件大小!