Eu sou novo no Chef. Eu tentei escrever uma receita que instala o Zend OpCache (para o PHP 5.4, já que ainda não está embutido) usando o livro de receitas do Chef PHP .
Eu tentei usar o php_pear
php_pear "opcache" do
package_name "ZendOpcache"
action :install
preferred_state "beta"
zend_extensions ["opcache.so"]
directives node['php']['opcache']['directives']
end
mas o arquivo .ini
gerado tem ZendOpcache
como o prefixo para as variáveis
ubuntu@webserver3:~$ cat /etc/php5/conf.d/ZendOpcache.ini
; configuration for php ZendOpcache module
zend_extension=/usr/lib/php5/20100525/opcache.so
ZendOpcache.revalidate_freq="60"
ZendOpcache.enable_cli="1"
ZendOpcache.memory_consumption="128"
ZendOpcache.interned_strings_buffer="8"
ZendOpcache.fast_shutdown="1"
ZendOpcache.max_accelerated_files="4000"
ZendOpcache.save_comments="0"
o prefixo deve ser opcache
.
Eu tentei criar manualmente o arquivo .ini
sozinho
template "#{node['php']['ext_conf_dir']}/opcache.ini" do
source "extension.ini.erb"
cookbook "php"
owner "root"
group "root"
mode "0644"
variables(:name => 'opcache', :extensions => {'/usr/lib/php5/20100525/opcache.so' => true}, :directives => node['php']['opcache']['directives'])
action :create
end
Quando tentei executar o PHP, existe esse aviso
PHP Warning: Module 'Zend OPcache' already loaded in Unknown on line 0
[exec] PHP Warning: Zend OPcache: module registration failed! in Unknown on line 0
O carregamento do módulo opcache é feito em dois lugares, ZendOpcache.ini
e o manual opcache.ini
.
A única solução que posso encontrar e trabalhar é esta
php_pear "opcache" do
package_name "ZendOpcache"
action :install
preferred_state "beta"
zend_extensions ["opcache.so"]
end
template "#{node['php']['ext_conf_dir']}/opcache.ini" do
source "extension.ini.erb"
cookbook "php"
owner "root"
group "root"
mode "0644"
variables(:name => 'opcache', :extensions => {}, :directives => node['php']['opcache']['directives'])
action :create
end
isso criará dois arquivos ZendOpcache.ini
e opcache.ini
. Um para carregar o módulo e outro para colocar a configuração.
Parece um desperdício usar dois arquivos de configuração para um módulo. Existe alguma maneira mais simples de fazer isso?