Постустановка Zend Optimizer
Каждый раз при установке Zend Optimizer почему-то возникает проблема с копированием нужных файлов инсталлятором из дистрибутива Zend Optimizer. Может я что-то не так делаю при установке, которая, к слову, заключается всего лишь в запуске инсталлятора и ответах на пару простых вопросов.
Вероятно проблема возникает из-за того, что я, чаще всего, ставлю PHP не как модуль Апача, а как CGI и, кроме того, зачастую ставлю несколько версий и вариантов PHP для нескольких версий MySQL )
Проблема довольно чётко выявляется по логам PHP:
[Tue Oct 27 08:24:36 2009] [error] [client 10.0.0.13] PHP Warning: Zend Optimizer for PHP 4.4.x cannot be found (expected at '/usr/local/Zend/lib/Optimizer-3.3.0/php-4.4.x/ZendOptimizer.so') - try reinstalling the Zend Optimizer in Unknown on line 0
И действительно папки «/usr/local/Zend/lib/Optimizer-3.3.0/php-4.4.x» нет, ну и, соответственно, файла «ZendOptimizer.so» тоже нет.
Зато в дистрибутиве Zend Optimizer, в директории «data», есть вот такие папки:
4_2_0_comp
4_2_x_comp
4_3_x_comp
4_4_x_comp
5_0_x_comp
5_1_x_comp
5_2_x_comp
По-моему, весьма показательные названия )
Проверяем — копируем папку с названием, соответствующим версии нашего PHP, в папку, упоминаемую в логах:
cp -r data/4_4_x_comp /usr/local/Zend/lib/Optimizer-3.3.0/php-4.4.x
Проверяем и убеждаемся, что ошибки более не появляются в логах.
В общем-то уже ура, но я предпочитаю устанавливать Zend Optimizer сразу для всех версий PHP, которые есть в дистрибутиве, ну-у-у… например, для того, чтобы не думать об этом при обновлении PHP. Поэтому для автоматизации процесса сделал небольшой shell-скрипт, который привожу здесь не тщеславия ради, а токмо чтобы не потерять его )
Собственно скриптик:
#!/bin/sh
[ $1 ] || { echo "`basename $0` dir_with_dist"; exit 1; }
dist="$1"
dir="/usr/local/Zend"
########### Do standart install:
$dist/install-tty
########### Do post install:
mkdir -p $dir/lib/Optimizer-3.3.0
cp $dist/data/ZendExtensionManager.so $dir/lib
cp $dist/data/ZendExtensionManager_TS.so $dir/lib
for i in `ls -d $dist/data/*_comp`
do
i=`basename $i`
echo -n "$i -> "
pdir=`echo ${i%*_comp} | tr '_' '.'`
echo "$pdir"
cp -r $dist/data/$i $dir/lib/Optimizer-3.3.0/php-$pdir
done
#eof
Дополнение от 29-10-2009
Тут ещё выяснилась проблема с Zend Optimizer под PHP5 под FreeBSD 7.2 amd64 — не работает с конфигурацией, которую генерит инсталлятор Zend Optimizer. Надо добавить ещё строчку «zend_optimizer.optimization_level=14»:
[Zend]
zend_optimizer.optimization_level=14
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
zend_optimizer.version=3.3.0a
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so