Ошибка при запуске PHP: как добавить PHP в переменную окружения PATH
Ошибка 'php не является внутренней или внешней командой': причины и решения
При попытке выполнить команду php в командной строке Windows может появиться сообщение: 'php' не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Это означает, что операционная система не находит исполняемый файл php.exe в текущей директории или в переменной окружения PATH. Далее рассмотрены основные способы решения.
Как сделать так, чтобы команда php распознавалась из любой директории?
Самый надёжный способ - добавить путь к папке, где находится php.exe, в системную переменную PATH через графический интерфейс Windows.
Пошаговая инструкция (Windows 10/11):
- Нажмите Win + R, введите
sysdm.cplи нажмите Enter. - Перейдите на вкладку Дополнительно → Переменные среды.
- В разделе Системные переменные найдите переменную
Pathи нажмите Изменить. - Нажмите Создать и введите полный путь к папке с
php.exe, напримерC:\php. - Нажимайте ОК во всех окнах.
- Перезапустите командную строку и проверьте:
php -v.
C:\> php -v
PHP 8.3.0 (cli) (built: Nov 21 2023 20:25:38) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend TechnologiesGet env php (получение переменных окружения)
Типичные ошибки:
- После добавления пути команда не работает - не перезапущена командная строка. Требуется закрыть и открыть её заново.
- Путь указан с пробелами (например
C:\Program Files\PHP) - оборачивайте в кавычки при вводе в редакторе переменных. Windows автоматически добавит кавычки. - Права администратора - для изменения системных переменных нужны права администратора. Запускайте окно переменных среды от имени администратора.
Как временно обойти ошибку без изменения конфигурации системы?
Можно каждый раз указывать полный путь к php.exe:
C:\> C:\php\php.exe -v
PHP 8.3.0 (cli) (built: Nov 21 2023 20:25:38) ( ZTS Visual C++ 2019 x64 )...Php could not find driver (ошибка "could not find driver" в php)
Такой подход удобен для тестирования, но неудобен при частом использовании.
Как добавить PHP в PATH только для текущей сессии командной строки?
Временное добавление пути через команду set PATH:
set PATH=%PATH%;C:\php
php -vPhp не является внутренней или внешней командой (php не является внутренней или внешней командой)
После закрытия окна cmd изменения исчезнут. Это полезно для одноразовых скриптов или тестов.
Проблема:
Если в пути есть кириллица или специальные символы, кодировка может нарушиться. Используйте только латиницу.
Как правильно установить PHP через официальный установщик Windows?
Скачайте PHP с windows.php.net. Выберите версию Non Thread Safe для веб-серверов или Thread Safe для разработки. Распакуйте архив в C:\php. Затем добавьте этот путь в переменную PATH, как описано в основном решении.
Установщик MSI (для старых версий) может сам прописать в PATH, но для современных ZIP-архивов это нужно делать вручную.
Типичная ошибка:
Скачана 64-битная версия PHP, а система 32-битная - команда не запустится. Сверяйте разрядность.
Как упростить установку и настройку PHP с помощью пакетного менеджера?
Используйте Chocolatey или Scoop. Например, через Chocolatey:
choco install php -yPhp command line (командная строка php (cli))
Менеджер автоматически скачает PHP, распакует и пропишет в PATH. После установки сразу работает команда php.
Возможные проблемы:
Для Chocolatey требуется PowerShell от имени администратора. Если установка происходит в офлайн-среде, этот метод не подходит.
Как избежать проблем с окружением, используя контейнеризацию?
Запустите PHP в Docker-контейнере. Не требуется установка PHP на хост-систему.
docker run --rm -v "%CD%":/app -w /app php:8.3-cli php script.phpUsr share php (путь usr/share/php)
Таким образом, команда php выполняется внутри контейнера. Ошибка 'php не является...' не возникнет, так как используется Docker.
Недостаток:
Требуется установленный Docker и доступ к интернету для скачивания образов.
Как создать отдельную переменную PHP_HOME для удобства обновления версий?
Создайте системную переменную PHP_HOME с путём к папке PHP, затем в переменную Path добавьте %PHP_HOME%. Это упростит смену версии: достаточно изменить PHP_HOME.
setx PHP_HOME "C:\php83"
setx Path "%Path%;%PHP_HOME%"
После перезапуска cmd команда php будет работать.
Важно:
Параметр setx устанавливает переменную на уровне пользователя. Для системного уровня используйте setx /M от имени администратора.
Расширенные примеры настройки и устранения ошибки
Пример 1. Постоянное добавление пути через командную строку с проверкой
Используйте setx для изменения системной переменной PATH. Выполните от имени администратора:
setx /M Path "%Path%;C:\php"
После этого откройте новое окно cmd и проверьте:
C:\> echo %Path%
C:\Windows\system32;...;C:\php
C:\> php -v
PHP 8.3.0 (cli) (built: Nov 21 2023 20:25:38) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies
Результат:
Команда php распознаётся во всех сессиях.
Пример 2. Использование полного пути и создание пакетного файла
Создайте файл php.bat в папке C:\Windows или другой, уже находящейся в PATH, со следующим содержимым:
@echo off
C:\php\php.exe %*
Теперь при вызове php будет запускаться этот батник. Проверка:
C:\> php -r "echo 'Hello from batch';"
Hello from batch
Проблема:
Если обновить PHP, нужно менять путь в батнике.
Пример 3. Установка PHP через Chocolatey с детализацией
Установите Chocolatey (если ещё не установлен) и выполните:
# От имени администратора в PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install php --version 8.3.0 -y
После завершения проверьте:
C:\> php -v
PHP 8.3.0 (cli) (built: Nov 21 2023 20:25:38) ( ZTS Visual C++ 2019 x64 )
Путь добавляется автоматически. Для обновления используйте choco upgrade php.
Пример 4. Docker-контейнер с выполнением PHP-скрипта
Создайте файл hello.php:
<?php
echo "Hello from Docker container!\n";
?>
Выполните:
docker run --rm -v "%CD%":/app -w /app php:8.3-cli php hello.php
Результат:
Hello from Docker container!
Использование Docker полностью изолирует окружение, ошибка 'php не является...' не возникает, так как команда выполняется внутри контейнера.
Пример 5. Создание и использование переменной PHP_HOME через PowerShell
Откройте PowerShell от имени администратора:
[Environment]::SetEnvironmentVariable("PHP_HOME", "C:\php", "Machine")
$path = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPath = $path + ";%PHP_HOME%"
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")
Перезапустите cmd и выполните:
C:\> php -v
PHP 8.3.0 (cli) (built: Nov 21 2023 20:25:38) ( ZTS Visual C++ 2019 x64 )
При смене версии достаточно изменить PHP_HOME:
[Environment]::SetEnvironmentVariable("PHP_HOME", "C:\php84", "Machine")
Пример 6. Обработка путей с пробелами и специальными символами
Если PHP установлен в C:\Program Files\PHP\8.3, при добавлении в PATH через графический интерфейс система сама экранирует. При использовании командной строки оборачивайте в кавычки:
setx /M Path "%Path%;C:\Program Files\PHP\8.3"
Проверьте:
C:\> php -v
Если команда не работает, проверьте, не конфликтует ли с другими установками PHP. Удалите старые записи из PATH.
Типичная ошибка:
'php' не является внутренней или внешней командой, хотя путь добавлен.
Причина: кавычки не экранированы, или путь содержит символы, которые cmd интерпретирует. Используйте короткое имя (8.3) или попробуйте PROGRA~1.