BNK*_*BNK 6 php ruby cookbook chef-infra vagrant
我从Opscode公司,并在发现厨师dotdeb菜谱安装了PHP食谱厨师dotdeb,这样我可以运行PHP 5.4的流浪汉框.
我想修改一些默认php.ini设置.
根据厨师php cookbook的文档,我可以使用修改设置
node['php']['directives'] = {}
Run Code Online (Sandbox Code Playgroud)
例如:
node['php']['directives'] = { :short_open_tag => 'Off' }
Run Code Online (Sandbox Code Playgroud)
我已经webserver.rb在我的应用程序cookbook中创建的脚本中进行了修改.当我配置或重新加载流浪盒时,php.ini设置保持不变.
有什么想法有什么不对?
webserver.rb文件的内容是:
include_recipe"nginx"
include_recipe"php"
node.default ["php"] ["指令"] = {:short_open_tag =>'关'}
甚至当我删除dotdeb食谱,以便唯一的PHP东西来自官方的opscode php食谱它仍然不会更新任何ini值.
附加信息
我查看了opscode php cookbook中的代码,它实际上将指令注入到erb php.ini模板中:https: //github.com/opscode-cookbooks/php/blob/master/templates/ubuntu/php.ini. ERB
注入将指令追加到文件末尾的代码是:
<% @directives.sort_by { |key, val| key }.each do |directive, value| -%>
<%= "#{directive}=\"#{value}\"" %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
这总是空的{}
但是....如果我修改它...
<% node.default[:php][:directives].sort_by { |key, val| key }.each do |directive, value| -%>
<%= "#{directive}=\"#{value}\"" %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
然后将指令注入模板中.我不是红宝石专家.这两个逻辑之间的根本区别是什么?
小智 1
尝试使用:
node.set['php']['directives'] = { :short_open_tag => 'Off' }
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可以尝试使用覆盖选项:
node.override['php']['directives'] = { :short_open_tag => 'Off' }
Run Code Online (Sandbox Code Playgroud)
从 Chef 11 开始,您需要明确设置优先级:
https://wiki.opscode.com/display/chef/Breaking+Changes+in+Chef+11