PHP4+XSLT+ZendOptimizer
Я уже писал, что мне приходят дайджесты fido7.ru.unix.bsd. Так вот очередная заинтиресовававшая меня тема: ”xslt+zend=core dump”.
Суть проблемы заключается в том, что если у вас с утра в гороскопе было сказано, что будут проблемы, а вы не признаете гороскоп, или же вы поставили не на ту сферическую лошадку в вакууме, или же просто так и в добавок ко всему у вас есть PHP4, использующий свой extension xslt вместе с ZendOptimizer (как cli так и апач с mod_php) , то у вас заимеется возможность поближе подружится с софтом, который “выпадает в корку”. Причем, действительно не понятно (во всяком случае мне и пока) по какой причине такое происходит.
У меня это было на одной из машин, находившихся в моей юриздикции.
Об помощи, я даже спрашивал у “знатоков” в PHPClub‘е…
Sergey A. Gribchenko также напоролся на эту проблему, о чем он не поленился написать в рассылку UAFUG‘а. К тому времени методом научного тыка я уже нашел один способ, как заставить апач работать и не выпадать в кору, чем там же и поделился.
Алгоритм весьма прост.
Для того, что бы запустить сам апач, коментируем в соответсвующем ini-файле (/usr/local/etc/php.ini и /usr/local/etc/php/extensions.ini) строчку о XSLT-модуле.
/usr/local/etc/php/extensions.ini:
2 extension=snmp.so
3 extension=mbstring.so
4 extension=mysql.so
5 extension=pcre.so
6 extension=xml.so
7 ;extension=xslt.so
8 extension=bz2.so
9 extension=mcrypt.so
10 extension=session.so
11 extension=zlib.so
12 extension=openssl.so
13 extension=tokenizer.so
14 extension=pdf.so
15 extension=gd.so
16 extension=ctype.so
17 extension=sqlite.so
/usr/local/sbin/apachectl graceful: httpd gracefully restarted
В результете получаем работающий mod_php c XSLT и ZendOptimizer’ом.
Недостаток налицо: при старте системы сам апач так не подымется, и не каждый duty-андроид в состоянии понять, что надо сделать и зачем.
Впоследствии, применив повторно метод, придуманый выдающимся немецким математиком и врачом Гансом Фридрихом Тыком, был обнаружен еще один способ. Этот еще проще. Внимание, сейчас будет смешно.
Строчку c extension=xslt.so необходимо записать ДВАЖДЫ:
2 extension=snmp.so
3 extension=mbstring.so
4 extension=mysql.so
5 extension=pcre.so
6 extension=xml.so
7 extension=xslt.so
8 extension=xslt.so
9 extension=bz2.so
10 extension=mcrypt.so
11 extension=session.so
12 extension=zlib.so
13 extension=openssl.so
14 extension=tokenizer.so
15 extension=pdf.so
16 extension=gd.so
17 extension=ctype.so
18 extension=sqlite.so
В результате, конечно же, получим при старте кучу warning’ов наподобии этого:
PHP Warning: Function registration failed - duplicate name - xslt_create in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_sax_handlers in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_scheme_handlers in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_error_handler in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_base in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_encoding in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_log in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_process in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_error in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_errno in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_free in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_set_object in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_setopt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_getopt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_backend_version in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_backend_name in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - xslt_backend_info in Unknown on line 0
PHP Warning: xslt: Unable to register functions, unable to load in Unknown on line 0
PHP 4.4.4 with Suhosin-Patch 0.9.6 (cli) (built: Dec 27 2006 12:51:47)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with Zend Extension Manager v1.0.8, Copyright (c) 2003-2005, by Zend Technologies
with Zend Optimizer v2.5.10, Copyright (c) 1998-2005, by Zend Technologies
но зато работает, и стартует без проблем со стартом системы.
Единственная неувязочка - при обновлении самого textproc/php4-xslt, система стирает содержимое о модуле из extensions.ini, о чем заблаговременно позаботились разработчики bsd.php.mk. Лечится или вынесением одной из строчек в сам php.ini, или жешче: установкой флага schg на файл.
-rw-r–r– 1 root wheel - 306 Jan 8 20:47 /usr/local/etc/php/extensions.ini
# chflags noschg /usr/local/etc/php/extensions.ini
# ls -lo /usr/local/etc/php/extensions.ini
-rw-r–r– 1 root wheel schg 306 Jan 8 20:47 /usr/local/etc/php/extensions.ini
Главное об этом потом не забыть, когда чего нить досталять нужно.
Posted in Adminspotting, Софт | 2 comments | atom
Trackbacks
Use the following link to trackback from your own site:
http://blog.org.ua/trackbacks?article_id=php4-xslt-zendoptimizer&day=16&month=02&year=2007
11 days later:
насчёт “прописать строку дважды” - это убиццо веником! :\
11 days later:
та-да… а прикинь, сколько веников пришлось угробить, что б обнаружить подобный вариант?