Я новичок в Chef. Я попытался написать рецепт установки Zend OpCache (для PHP 5.4, поскольку он еще не встроен), используя Поваренная книга PHP от шеф-повара.
Я пробовал использовать php_pear
php_pear "opcache" do
package_name "ZendOpcache"
action :install
preferred_state "beta"
zend_extensions ["opcache.so"]
directives node['php']['opcache']['directives']
end
но .ini
сгенерированный файл имеет ZendOpcache
как префикс для переменных
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"
префикс должен быть opcache
.
Затем я попытался вручную создать .ini
подать себя
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
Когда я пытался запустить PHP, появляется это предупреждение
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
Загрузка модуля opcache осуществляется в двух местах: ZendOpcache.ini
и руководство opcache.ini
.
Единственное решение, с которым я могу работать, - это
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
это создаст два файла ZendOpcache.ini
и opcache.ini
. Один для загрузки модуля, а другой для установки конфигурации.
Использование двух конфигурационных файлов для одного модуля кажется немного расточительным. Есть ли более простой способ сделать это?
Мы используем репозитории Remi, это обычный пакет yum, и нам не нужно напрямую обращаться к PECL.
Таким образом, хотя метод, который вы используете внизу, дает работающую настройку zend opcache, мы нашли немного лучший способ, просто установив php-pecl-zendopcache
ням пакет.
Попробуйте в своей кулинарной книге default.rb
:
bash "adding zendopcache-7.0.3" do
if `php -v | grep OPcache`.empty?
code <<-EOH
apt-get install -y php-pear build-essential php5-dev
pecl install zendopcache-7.0.3
EOH
end
end
template "#{node[:php][:ext_conf_dir]}/opcache.ini" do
source "opcache.ini.erb"
mode "0644"
end