Исправление ошибки vcruntime140.dll в PHP

Раздел: Программирование на PHP -> Ошибки и предупреждения PHP

Предупреждение PHP о vcruntime140.dll: причины и решения

Предупреждение PHP Warning: vcruntime140.dll возникает при попытке запуска интерпретатора PHP, если в системе отсутствует необходимая библиотека времени выполнения Visual C++. Ошибка проявляется в виде сообщения "PHP Warning: PHP Startup: Unable to load dynamic library ... - The specified module could not be found" или непосредственно "vcruntime140.dll is missing". Причиной является отсутствие или несовместимость распространяемого пакета Microsoft Visual C++ Redistributable. Далее рассмотрены основные способы исправления.

Как установить Microsoft Visual C++ Redistributable для устранения ошибки?

Наиболее эффективное решение - установить последнюю версию распространяемого пакета Visual C++, содержащего файл vcruntime140.dll. Действия:

  1. Определить разрядность используемой сборки PHP (x86 или x64). Выполнить команду:
php -v

Php e warning (e_warning в php)

PHP 8.3.0 (cli) (built: Nov 28 2023 12:00:00) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies

Php throw warning (выброс предупреждения php)

Если в строке после версии указано (TS) или (NTS) - разрядность не отображается. Проверить разрядность можно через phpinfo() или команду:

php -i | findstr /i "Architecture"

Php warning vcruntime140 dll (предупреждение php vcruntime140.dll)

Architecture => x64

Php warning null (предупреждение php о null)

  1. Скачать соответствующий пакет с официального сайта Microsoft:
  • Для 64-разрядного PHP: vc_redist.x64.exe
  • Для 32-разрядного PHP: vc_redist.x86.exe

После запуска установщика следовать инструкциям. После завершения перезагрузить компьютер или выполнить команду php -v - предупреждение должно исчезнуть.

Возможные проблемы и ошибки:

  • Установка пакета не решает проблему, если используется portable-версия PHP с нестандартным путём поиска DLL. В таком случае требуется скопировать файл vcruntime140.dll вручную в папку PHP или в C:\Windows\System32 (для x64) / C:\Windows\SysWOW64 (для x86).
  • После установки появляется ошибка "vcruntime140_1.dll" - дополнительно установить пакет Visual C++ 2015–2022, включающий эту версию DLL.

Как проверить, какая версия Visual C++ Redistributable уже установлена?

Перед установкой стоит проверить текущее состояние системы. Использовать команду PowerShell:

Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like "*Visual C++*"} | Select-Object Name, Version

Php warning include (предупреждение php при включении файла)

Name: Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.34.31931
Version: 14.34.31931

Content warning php (предупреждение контента php)

Если пакет отсутствует или версия ниже 14.0, следует установить актуальную версию. Ошибка часто возникает при использовании PHP 7.4 и новее, требующих vcruntime140.dll версии 14.0.

Типичные ошибки:

  • Установлена только 32-разрядная версия, а PHP - 64-разрядный (и наоборот).
  • Установлена версия Visual C++ 2013, которая не содержит vcruntime140.dll.

Что делать, если после установки библиотеки ошибка сохраняется?

Возможные причины и шаги для диагностики:

  1. Проверить, не заблокирован ли файл vcruntime140.dll антивирусом. Временно отключить защиту или добавить папку PHP в исключения.
  2. Убедиться, что файл vcruntime140.dll присутствует в одном из системных каталогов. Команда:
where vcruntime140.dll

Warning php startup (предупреждение при запуске php)

C:\Windows\System32\vcruntime140.dll

Если файл не найден, скопировать его из установленного пакета Visual C++ (обычно находится в C:\Program Files\Microsoft Visual Studio\...).

  1. Переустановить PHP с официального сайта - возможно, скачанная сборка повреждена.

Проблемы с правами доступа:

  • При установке PHP в системную папку (например, C:\Program Files) требуется запуск от имени администратора.

Как решить проблему с помощью переустановки PHP с пакетным менеджером?

Для упрощения управления зависимостями можно использовать Chocolatey или Scoop. Пример установки PHP через Chocolatey:

choco install php --params "/ThreadSafe /InstallVC"

Ключ /InstallVC автоматически устанавливает необходимые библиотеки Visual C++. После установки проверить работу:

php -r "echo 'OK';"
OK

Особенности:

  • Chocolatey требует прав администратора.
  • При использовании Scoop дополнительных пакетов не требуется - Scoop включает vcruntime140.dll в bundle.

Как использовать Portable-версию PHP без установки Visual C++ в систему?

Можно скачать portable-сборку PHP, которая уже включает все необходимые DLL. Например, с сайта https://windows.php.net/download/ выбрать zip-архив с пометкой "VC17 x64 Non Thread Safe". Распаковать в любую папку. Запустить php.exe - библиотеки находятся в той же директории, поэтому предупреждение не появляется.

.\.\php.exe -v
PHP 8.3.0 (cli) (built: Nov 28 2023 12:00:00) ( NTS )...

Проблема:

  • Если portable-версия используется вместе с веб-сервером (например, Apache), может потребоваться указать путь к DLL в переменной PATH или скопировать их в системную папку.

Дополнительные примеры и сценарии

Пример 1: Проверка загрузки расширения через phpinfo()

Создать PHP-файл info.php с содержанием:

Пример
<?php phpinfo(); ?>

Запустить из командной строки:

Пример
php -f info.php | grep -i "vcruntime"

Результат - строка с указанием модуля Visual C++ (если он загружен):

Visual C++ Redistributable support => enabled

Если вывод пуст - библиотека не обнаружена. Этот метод удобен при использовании PHP с веб-сервером.

Пример 2: Установка конкретной версии Visual C++ через командную строку

Скачать установщик vc_redist.x64.exe и выполнить тихую установку:

Пример
vc_redist.x64.exe /install /quiet /norestart

Проверить статус установки:

Пример
reg query "HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" /v Version
Version    REG_SZ    v14.34.31931.0

Это позволяет автоматизировать установку на нескольких машинах.

Пример 3: Запуск PHP через Docker без конфликтов с vcruntime140.dll

Использовать официальный образ PHP:

Пример
docker run --rm -v "%CD%":/app -w /app php:8.3-cli php -v

Вывод:

PHP 8.3.0 (cli) (built: ...) ( NTS )

Внутри контейнера библиотеки Visual C++ уже включены, ошибка отсутствует. Этот способ полностью устраняет зависимость от хостовой системы.

Пример 4: Устранение ошибки "vcruntime140_1.dll" дополнительным пакетом

Иногда требуется версия DLL с суффиксом _1. Она входит в более свежие обновления Visual C++. Скачать последнюю версию с официального источника и установить. Проверка:

Пример
dir C:\Windows\System32\vcruntime*.dll
vcruntime140.dll
vcruntime140_1.dll

Оба файла должны присутствовать. Если _1 нет, установка обновлённого пакета решит проблему.

Пример 5: Восстановление повреждённого файла vcruntime140.dll через sfc

Если файл повреждён, можно использовать средство проверки системных файлов:

Пример
sfc /scannow

Вывод (частичный):

Windows Resource Protection found corrupt files and successfully repaired them.

После перезагрузки проверка PHP должна пройти без предупреждения.

Предупреждение PHP vcruntime140.dll - comments

En
Php warning vcruntime140 dll (php)