我已经安装了来自 opscode 的 PHP Cookbook 和在 chef-dotdeb 找到的 chef-dotdeb 食谱,这样我就可以在 vagrant box 中运行PHP 5.4 。
我想修改一些默认php.ini
设置。
根据chef php cookbook的文档,我可以使用修改设置
node['php']['directives'] = {}
例如:
node['php']['directives'] = { :short_open_tag => 'Off' }
webserver.rb
我已经在我的应用程序说明书中创建的脚本中进行了修改。当我配置或重新加载 vagrant box 时,php.ini
设置保持不变。
有什么想法有什么问题吗?
webserver.rb 文件的内容是:
include_recipe“nginx”
include_recipe "php"
node.default["php"]["directives"] = { :short_open_tag => 'Off' }
即使当我删除 dotdeb 食谱以便唯一的 php 内容来自官方 opscode php 食谱时,它仍然不会更新任何 ini 值。
附加信息
我查看了 opscode php 食谱中的代码,该代码实际上将指令注入到 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 -%>
这总是空的 {}
但是....如果我将其修改为...
<% node.default[:php][:directives].sort_by { |key, val| key }.each do |directive, value| -%>
<%= "#{directive}=\"#{value}\"" %>
<% end -%>
然后指令被注入到模板中。我不是红宝石专家。这两条逻辑之间的根本区别是什么???