Я являюсь новым на Шеф-поваре. Я пытался писать рецепт, который устанавливает Пехлеви 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
. Один для загрузки модуля и другого для помещения конфигурации.
Это кажется немного ненужным использованием двух файлов конфигурации для одного модуля. Там какой-либо более простой путь состоит в том, чтобы сделать это?
Попробуйте в вашей кулинарной книге по умолчанию.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
Мы используем репозитории Remi, это обычный пакет yum, и нам не нужно выйти напрямую в PECL.
Таким образом, хотя метод, который вы используете внизу, дает работающую настройку zend opcache, мы нашли немного лучший способ, просто установив пакет yum php-pecl-zendopcache
.