О несовместимости версий PHP
Вчера я постил инструкцию о том как компилировать PHP и Апачи в целях наличия нескольких версий.
Были множественные комменты типа "никогда не было таких проблем", "конкретных примеров конечно не будет" итп.
Развенчиваем! :)
Сегодня специально натравил make test на последнюю скачанную версию PHP (5.2.9)
Результат:
EXPECTED FAILED TEST SUMMARY
---------------------------------------------------------------------
ob_start(): Ensure unerasable buffer cannot be flushed by ob_flush(). [tests/output/ob_start_basic_unerasable_005.phpt]
SPL: ArrayObject::__construct basic usage with ArrayObject::ARRAY_AS_PROPS. [ext/spl/tests/arrayObject___construct_basic4.phpt]
SPL: ArrayObject::__construct basic usage with ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS. [ext/spl/tests/arrayObject___construct_basic5.phpt]
SPL: ArrayObject::exchangeArray() basic usage with object as underlying data store. [ext/spl/tests/arrayObject_exchangeArray_basic3.phpt]
SPL: ArrayObject::setFlags basic usage with ArrayObject::ARRAY_AS_PROPS. [ext/spl/tests/arrayObject_setFlags_basic1.phpt]
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #30707 (Segmentation fault on exception in method) [Zend/tests/bug30707.phpt]
(и там дальше еще 15 проваленных не-expected тестов по различным багам. и один даже не по багу, а просто так — один из gettext basic test).
Так-то, господа не верующие в баги.
На всякий случай ([strike]для разжигания разговора[/strike]) дальнейший ход мысли.
Допустим в следующей версии пыха (5.3.0) пофиксят expected-баг SPL c Array Object'ом, и программер напишет на PHP 5.3.0 скрипт с ARRAY_AS_PROPS.
А потом этот скрипт поставят на сервак с PHP 5.2.9, и все накроется.
Поэтому у девелопера должен быть установлен и PHP 5.2.9 и PHP 5.3.0 одновренменно, чтобы писать сразу под несколько различных целевых серваков. Что довольно затруднительно делать с помощью пакетов (по крайней мере YUM+rpm =) Следовательно, нужно или виртуалить под каждую сборку PHP отдельную виртуальную машину, или собирать вручную из исходников.
Так — более аргументированно?