Ошибка PHP CURL: Unable to load dynamic library

Работаю на Windows 10, пользуюсь сборкой wampserver, на момент установки там были php7.0.8, apache2.4.20. На боевых серверах сейчас, в основном, Ubuntu 18.04 LTS, а значит там по умолчанию используется php7.2.24. Хочется для надёжности иметь локальную среду той же версии, да и я локально столкнулся с багом в php при json_encode. Проверил, на версии 7.2.x уже всё хорошо. Конкретно скачал php7.2.34, но эта разница значения не имеет: со временем выяснил, что ошибка, о которой статья, возникает на всех более старших версиях php.

Итак, поставил новые версии, всё хорошо. Кроме того, что ничего не работает )
Версия php7.4.13 тоже не помогла, вижу в php_error.log ту же самую ошибку:

 

Что делать?

— Нужно обновить apache! 

 

Поставил апач последней версии apache2.4.46, и сразу заработали не только старые, но и новые версии php, в том числе нет проблем с curl.

Добавить новую версию php в wampserver просто: достаточно скопировать содержимое папки php в c:\wamp64\bin\php\php7.2.34\, и добавить в эту же папку файл wampserver.conf, такой же как в соседней версии php которая шла в комплекте с wamp. Ну и потом стандартно скопировать файл например php.ini-development в php.ini, настроить под себя. И ещё один шаг: скопировать этот же файл в phpForApache.ini, таким образом php.ini будет для консольных программ, а phpForApache.ini будет применяться при использовании пхп через апач.

В принципе новая версия apache добавляется так же, за тем исключением что на сайте apache не дают скачать уже собранную скомпилированную версию. Поэтому простое решение — скачать и поставить новую версию wampserver, там будут свежие скомпилированные под виндоус дистрибутивы. Есть один минус: при установке в соседнюю директорию вампсервер перезапишет существующие сервисы апача и mysql, старый сервер перестанет работать. Чтобы заставить старый сервер ещё раз перезаписать нужные сервисы, мне хватило просто переключить в старом вампсервере версии apache, mysql. В момент переключения сервисы перезаписываются.

И чтобы подогнать новую версию apache2.4.46 под старый wampserver потребовалось незначительно отредактировать httpd.conf. Сразу заметно, насколько он стал лучше по сравнению со старыми версиями. Всё сразу на своих местах, для всяких хардкодных мест используются переменные, дефайны. Приятно смотреть!

Но старый вамп про пару этих дефайнов не знал, их пришлось захардкодить:

После этого всё заработало идеально!

Обсуждение

avatar

wpDiscuz