[sisyphus] PHP SPL не имеет класса SimpleXMLIterator

Павел rap-kasta на mail.ru
Чт Май 7 16:24:53 MSD 2009


On Среда 06 мая 2009 21:24:41 Alexey Gladkov wrote:
> On 06.05.2009 19:07, Павел wrote:
> > и заменить в нём файлы, отвечающие за spl на взятые "откуда нибудь"? И
> > если да, то может ли этим "откуда нибудь" стать например вот этот (
> > http://www.php.net/get/php-5.2.9.tar.gz/from/a/mirror ) архив?
>
> Конечно можете. Это называется обновить пакет php5. Только положив
> новый php-5.2.9.tar.gz вам предётся обновить все патчи и suhosin.

Итак, я обновил...установил и ...ничего не поменялось...Что же...чуть чуть 
погуглил и увидел что с отключенным при компиляции simpleXML simpleXMLIterator 
создан не будет.
Мораль: если надо SimpleXMLIterator, то не делаем disable-simplexml, при этом 
конечно расширение simpleXML стоит выключить, дабы не получать сообщения " 
Module 'SimpleXML' already loaded" (Ниже написал хаутушку)

P.S.Алексей, не могли бы вы в следующем коммите как-то разрулить эту ситуацию, 
я с ней справился, но вот  мало ли у кого вновь будет такая проблемка...


HowTO:

//Только если php -i|grep SimpleXMLIterator ничего не возвращает!

1)Качаем src.rpm пакет с сизифа, распаковываем куданить
2)Качаем сорс-пакет с php.net (мб в src.rpm уже всё есть...проверьте-если есть 
директория  php5-source.tar.bz2/php5-source/ext/simplexml и она не пустая...то 
я  думаю этот и следующий шаг можно пропустить)
3)распаковываем в другую директорию скачанный в (2) архив, делаем его по 
структуре аналогичным php5-source.tar.bz2, называем также и перемещаем в 
директорию (1)
4)правим spec: удаляем строчку --disable-simplexml \
5)переносим изменённый (1) в ~/RPM/SOURCES
6)спек кладём в ~/RPM/SPECS
7)делаем rpmbuild -ba <имя_спека>
8)идём в директорию с билдами (в (7) будет написано куда) и устанавливаем  
rpm-ки.
В моём случае: rpm -Uvh *
9)Тестируем:
php -r 'new SimpleXMLIterator() ';
Не обращаем внимание на ошибки и сомтрим есть ли заветное "Uncaught exception 
'Exception' with message 'SimpleXMLElement::__construct() expects at least 1 
parameter, 0 given' in Command line code", если есть, то не поверите: всё 
круто :-)
Если расширение simplexml было установлено,то должна появиться ошибка (в 
первой строке): "Module 'SimpleXML' already loaded"", чтобы от него 
избавиться, нам придётся избавиться и от рсширения simplexml как расширения 
(ибо он у нас "вшит в php"): добавляем во все используемые 
/etc/php/<ВЕРСИЯ>/<CLI/apache../apache2../etc...>/php.d/simplexml.ini точку с 
запятой (;) вначало и...радуемся жизни :-)



-- 
===============
А ещё говорят так:
Таланты истинны на критику не злятся; 
Их повредить она не может красоты. 
Одни поддельные цветы дождя боятся!
		-- И.А.Крылов
[fortune]



Подробная информация о списке рассылки Sisyphus