1

Ошибка при запуске PHP: как добавить PHP в переменную окружения PATH

Раздел: Администрирование PHP -> Настройка окружения PHP

Ошибка 'php не является внутренней или внешней командой': причины и решения

При попытке выполнить команду php в командной строке Windows может появиться сообщение: 'php' не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Это означает, что операционная система не находит исполняемый файл php.exe в текущей директории или в переменной окружения PATH. Далее рассмотрены основные способы решения.

Как сделать так, чтобы команда php распознавалась из любой директории?

Самый надёжный способ - добавить путь к папке, где находится php.exe, в системную переменную PATH через графический интерфейс Windows.

Пошаговая инструкция (Windows 10/11):

  1. Нажмите Win + R, введите sysdm.cpl и нажмите Enter.
  2. Перейдите на вкладку ДополнительноПеременные среды.
  3. В разделе Системные переменные найдите переменную Path и нажмите Изменить.
  4. Нажмите Создать и введите полный путь к папке с php.exe, например C:\php.
  5. Нажимайте ОК во всех окнах.
  6. Перезапустите командную строку и проверьте: 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 Technologies

Get 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 -v

Php не является внутренней или внешней командой (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 -y

Php 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.php

Usr 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.

PHP не является внутренней или внешней командой - comments

En
Php не является внутренней или внешней командой (php)