Как скомпилировать PHP в Windows с помощью Visual Studio 2022 Community Edition

Общая проблема

Microsoft предлагает только свой последний установщик VisualStudioSetup.exe для версии сообщества, которая на момент написания VS2022: https://visualstudio.microsoft.com/vs/older-downloads/

И я не могу скомпилировать с ним совместимый PHP-бинарный файл.

Технические детали

Проблема, с которой я столкнулся, заключается в том, что когда вы компилируете PHP из исходного кода (PHP 8.1, PHP 8.2, PHP 8.3), он связан с MSVC 14.40. При загрузке с https://windows.php.net он связан с MSVC 14.29.

Поэтому самокомпилированные расширения PECL несовместимы с загруженным двоичным файлом PHP.

Симптом

Они не будут загружаться при запуске со следующим сообщением: Предупреждение: PHP Startup: Can't load module 'php_jsmin.dll' as it's linked with 14.40, but the core is linked with 14.29 in Unknown on line 0

Это относится ко всем самокомпилируемым расширениям, а не только к jsmin.

Подход к проблеме

Я не могу установить только MSVC 14.29, потому что PHP нуждается в двух компонентах:

  • MSVC v142 — инструменты сборки VS 2019 C++ x64 (v14.29)
  • Инструменты C++ CMake для Windows

Инструменты C++ CMake для Windows имеют чертовски зависимость:

  • MSVC v143 — инструменты сборки VS 2022 C++ x64 (v14.40)

Среда компиляции php теперь всегда связана с версией 14.40. Это не было проблемой с установкой Visual Studio 2019, но Microsoft запрещает загружать старые версии сообщества. Вы можете загрузить установку Visual Studio 2022 только с указанной выше проблемой зависимостей.

Вопрос

Как я могу связать MSVC 14.29 при использовании установки Visual Studio 2022 для компиляции PHP из исходного кода.

Заранее большое спасибо!

Попробуйте https://download.visualstudio.microsoft.com/download/pr/93f2‌​4e82-778c-46ae-92f9-‌​8d3010ecd011/a5da04d‌​78b1f94ab145a3657334‌​76df7a1ec6219fa17f09‌​c7e2f3c7cd74d9c9e/vs‌​_Community.exe, что должно дать вам сообщество VS 2019.

Ian Kemp 06.08.2024 11:41

@IanKemp О боже, это сработало безупречно! Вы, сэр, мой личный герой :D Почему MS не может просто предложить их на своей странице загрузки? Кажется, это темная закономерность ^^ Если вы сформулируете это как ответ, я приму это как ответ.

McK 06.08.2024 14:00

@IanKemp, я добавлю ответ к твоему комментарию. Если вы позже добавите ответ самостоятельно, я изменю его на принятый.

McK 09.08.2024 09:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отказ от ответственности: это ответ из комментария @IanKemp.

По сути, не существует известного способа (по крайней мере, для меня) изменить поведение среды компиляции php.

Но есть простой способ вообще обойти эту проблему. Просто загрузите старую версию VisualStudioSetup.exe Community Edition 2019, где MSVC 14.29 является последней версией MSVC.

Его можно скачать здесь: https://download.visualstudio.microsoft.com/download/pr/93f24e82-778c-46ae-92f9-8d3010ecd011/a5da04d78b1f94ab145a365733476df7a1ec6219fa17f09c7e2f3c7cd74d9c9 e/vs_Community.exe


Альтернатива

Я нашел непринятый ответ, который даже обеспечивает более структурированную загрузку и даже более старые версии VS: https://stackoverflow.com/a/78644904/1519125

Спасибо @andrés-lópez

Я не могу/не буду называть его дубликатом, поскольку ответ, о котором я говорю, не является принятым. Вот содержание:

Здесь вы также можете скачать другие версии:

Другие вопросы по теме