webew
Войти » Регистрация
 
PHP

php5apache2_2.dll: совместная работа Apache и PHP

17 сентября 2011, 4:47
Автор: 1234ru
(сообщение является приложением к статье Настройка и установка WAMP)

Апачи, скачанные с официального сервера, начиная с какого-то момента (где-то полгода точно, а то и больше) не стартуют с последними версиями PHP.
Выражается это вот как: при подключении PHP возникает невнятная ошибка насчет файла php5apache2_2.dll (не связана с тем, что апач не может найти файл).

Причина этого следующая: все версии PHP, начиная с какого-то момента (одна из 5.3-версий) являются т.н. "VC"-версиями (достаточно взглянуть на названия версий, чтобы в этом убедиться).
Такие версии сделаны с использованием Visual Studio 2008 и требуют наличия пакета Visual C++ (см. ниже).

В баг-трекере php.net (похоже) официальные лица заявляют, что VC-версии несовместимы с пакетами от apache.org:

pajoye@php.net
Once again: VC9 binaries are NOT compatible with apache.org's binaries, so do not even try to reproduce a problem using them.


Там же советуют взять совместимую версию апача здесь: http://www.apachelounge.com/download/
Про неё также есть маленькая сносочка на странице загрузке PHP.

Для работы такого апача требуется установка библиотек Visual C++ (ссылка есть также в readme-файле архива с апачом).

При использовании вышеуказанной версии апача проблема с php5apache2_2.dll действительно устраняется.

Что за организация apachelounge.org и какое она имеет отношение к основным разработчикам апача - мне лично неизвестно.
Но тот факт, что апач с основного источника теперь несовместим с PHP, как-то удивляет..
На странице загрузки про это написано мелким шрифтом где-то слева внизу, на третьем экране скролла, куда никто не смотрит.
Это серьезная проблема, потому что по сообщениям апача сложно понять, почему он не работает, а про особенности VC-версии мало кто знает.
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

rgbeast

Очень странно, что PHP компилируется Visual C, а не gcc, как другие Open Source продукты. Еще более странно, что dll, которая является механизмом общих библиотек, не совместима между компиляторами (причем это специальная dll для апача, которую можно было подкорректировать). Такая ситуация выгодна для Microsoft - подобная несовместимость между компиляторами заставит всех использовать Visual C.

Apache - open source продукт, поэтому каждый вправе его перекомпилировать, если это поможет делу. Выглядит это как пересборка автомобиля, из-за того, что зеркало заднего вида не подошло.
17.09.2011, 13:00
Ответить

1234ru

Ну, это только для винды, вроде.. (а Visual C вместо gcc для винды - имхо, снявши голову, по волосам не плачут :) ).
То, что не убивает нас, делает нас инвалидами.
18.09.2011, 04:36
Ответить
NO USERPIC

rgbeast

За винду тоже обидно - меня всегда учили, что dll является универсальным, не зависящим от языка механизмом, а теперь получается, что это не так.
18.09.2011, 14:12
Ответить

1234ru

А разве такая необходимость не связана с изменением самого программного кода?
Если они требуют VC, значит, так какие-то компоненты на это полагаются, т.е. без VC сам продукт работать не может (именно из-за своей внутренней структуры, а не потому что его так скомпилировали), следовательно, нужна другая dll.
То, что не убивает нас, делает нас инвалидами.
18.09.2011, 16:07
Ответить
NO USERPIC

rgbeast

Он может требовать runtime dll для VC, но они свободно распространяются и есть в составе PHP. Непонятно, почему apache не может подключить dll PHP, которая в свою очередь подключит необходимые dll VC. Суть DLL - библиотека общедоступных функций, вызывающихся единообразным способом из любого приложения, написанного на любом языке (и раньше так и работало). Меня еще настораживают слова "VC9", то есть, возможно, раньше PHP тоже компилировался VC, но предыдущие версии не были такими несовместимыми.
18.09.2011, 16:15
Ответить

1234ru

Цитата:
Меня еще настораживают слова "VC9", то есть, возможно, раньше PHP тоже компилировался VC, но предыдущие версии не были такими несовместимыми.


Есть еще VC6.
Думаю, несовместимы были в той же степени, что и теперешние. В названии таких версий должна присутствовать аббревиатура "VC", так что отличить легко.
То, что не убивает нас, делает нас инвалидами.
18.09.2011, 16:44
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2024 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100