Исправление ошибки vcruntime140.dll в 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. Действия:
- Определить разрядность используемой сборки PHP (x86 или x64). Выполнить команду:
php -vPhp 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)
- Скачать соответствующий пакет с официального сайта 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, VersionPhp 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.
Что делать, если после установки библиотеки ошибка сохраняется?
Возможные причины и шаги для диагностики:
- Проверить, не заблокирован ли файл vcruntime140.dll антивирусом. Временно отключить защиту или добавить папку PHP в исключения.
- Убедиться, что файл vcruntime140.dll присутствует в одном из системных каталогов. Команда:
where vcruntime140.dllWarning php startup (предупреждение при запуске php)
C:\Windows\System32\vcruntime140.dll
Если файл не найден, скопировать его из установленного пакета Visual C++ (обычно находится в C:\Program Files\Microsoft Visual Studio\...).
- Переустановить 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 должна пройти без предупреждения.