Где находится исполняемый файл PHP

Раздел: Администрирование сервера -> Установка и конфигурация PHP

Поиск исполняемого файла PHP: основные подходы

Как определить точное местоположение бинарного файла PHP?

Наиболее эффективный и универсальный способ - использование встроенных утилит поиска или самого PHP. В командной строке выполните одну из команд:

which php         # Linux / macOS / Unix
where php         # Windows (PowerShell или cmd)

Php где установить (где находится исполняемый файл php)

/usr/bin/php      # пример вывода в Linux
C:\php\php.exe    # пример вывода в Windows

Если PHP установлен корректно и добавлен в переменную окружения PATH, эта команда вернёт путь к исполняемому файлу. Альтернатива - использовать сам PHP для вывода своего расположения:

php -r "echo PHP_BINARY;"
/usr/local/bin/php

Этот метод не зависит от настроек PATH и даёт гарантированный путь к бинарнику, который запускается в данный момент.

Типичные проблемы

  • Команда which php ничего не возвращает – PHP не в PATH или не установлен. Решение: проверить установку (dpkg -l php-cli / yum list installed php-cli) либо найти вручную через find / -name php -type f 2>/dev/null.
  • Выводится несколько путей (например, /usr/bin/php и /usr/local/bin/php) – установлены разные версии. Уточните, какой именно используется по умолчанию, через php -v или укажите полный путь при вызове.
  • Ошибка прав доступа: /usr/bin/php не исполняется для текущего пользователя. Исправьте chmod +x или запускайте через sudo (осторожно).

Цель: быстро найти путь к PHP для ручного запуска скриптов, настройки cron-задач, конфигурации веб-сервера (например, php-fpm). Используется в 90% случаев администрирования.

Как найти исполняемый файл PHP через информацию о расширениях и конфигурации?

При запуске PHP из веб-сервера (как модуль Apache или через FastCGI) путь к бинарнику можно получить из вывода функции phpinfo().

<?php phpinfo(); ?>

После открытия страницы в браузере найдите строку PHP Binary или PHP Path в разделе PHP Variables. В консольном режиме аналогичный вывод даёт команда:

php -i | grep -i "php binary"
PHP Binary => /usr/bin/php

Ошибки и нюансы

  • При использовании PHP-FPM бинарник может находиться в /usr/sbin/php-fpm, а не в /usr/bin/php – уточните через php-fpm -i | grep Binary.
  • Вывод phpinfo() может быть пустым, если сервер не обработал PHP. Проверьте, что веб-сервер действительно исполняет PHP (доступен файл info.php).

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

Как определить расположение PHP, установленного через пакетный менеджер?

Если вы ставили PHP через apt, yum, brew или choco, менеджер пакетов может показать все файлы установки.

# Debian / Ubuntu
dpkg -L php-cli | grep bin/php

# CentOS / RHEL
rpm -ql php-cli | grep bin/php

# macOS Homebrew
brew --prefix php   # выводит каталог установки

# Windows Chocolatey
choco list php --local-only   # показывает версию, путь – обычно C:\tools\php
/usr/bin/php
/usr/lib/php     # (каталог с библиотеками)

Возможные сложности

  • Пакет может называться не php-cli, а php7.2, php8.1 – подставьте версию.
  • На macOS brew может установить PHP в /usr/local/opt/php – но симлинки в /usr/local/bin/php не будет, если не выполнена команда brew link php.

Подходит для систем с централизованным управлением пакетами – позволяет увидеть все компоненты PHP.

Как найти PHP, собранный вручную из исходников?

При компиляции из исходников (./configure --prefix=/custom/path) бинарник окажется в каталоге /custom/path/bin/php. По умолчанию, если не указан --prefix, используется /usr/local/.

./configure --prefix=/opt/php8.2
make -j$(nproc)
sudo make install
# затем:
/opt/php8.2/bin/php -v

Чтобы система видела эту версию без указания полного пути, добавьте каталог в PATH через профиль оболочки:

export PATH="/opt/php8.2/bin:$PATH"

Проверьте: which php должно указать /opt/php8.2/bin/php.

Проблемы

  • Если после установки есть старая версия в /usr/bin/php, новый PATH может не переопределить её – поместите свой путь в начало.
  • Собранный бинарник может требовать дополнительные библиотеки – проверьте с помощью ldd /opt/php8.2/bin/php.

Необходимо для разработчиков, которым нужна кастомная сборка с определёнными опциями.

Как использовать переменные окружения для хранения пути к PHP?

Если PHP находится в нестандартном месте, можно задать переменную PHP_PATH или PHP_ROOT в системе и использовать её в скриптах.

# В .bashrc или .zshrc
export PHP_PATH=/usr/local/php8.3/bin
# Потом вызов:"$PHP_PATH/php" myscript.php

Также можно прописать PHP_BIN в Makefile или docker-compose.

Ошибки

  • Переменная не экспортирована дочерним процессам – используйте export.
  • Двойные кавычки при вызове могут быть потеряны – всегда заключать переменную в кавычки.

Удобно для централизованного управления путями в крупных проектах или на серверах с несколькими версиями PHP.

Детальные примеры поиска исполняемого файла PHP

Ниже приведены расширенные команды и сценарии с пояснениями и выводами.

1. Поиск всех установленных бинарников PHP (Linux)

Пример
# Показывает все вхождения php в PATH
which -a php 2>/dev/null || alias | grep php

# Рекурсивный поиск
find /usr /usr/local /opt -name "php" -type f -executable 2>/dev/null
/usr/bin/php
/usr/local/bin/php
/opt/php8.2/bin/php

2. Использование type для получения информации об алиасах (bash)

Пример
type php
php is /usr/bin/php

Если настроен алиас (alias php='/usr/local/php8/bin/php'), type покажет не только путь, но и алиас.

3. Получение пути из php.ini (Loaded Configuration File)

Пример
php -i | grep -i "php.ini"
php -r "echo PHP_CONFIG_FILE_PATH;"
Loaded Configuration File => /etc/php/8.1/cli/php.ini
Scan this dir for additional .ini files => /etc/php/8.1/cli/conf.d

Хотя это не путь к бинарнику, он часто указывает на каталог, где находится полная установка PHP.

4. Определение пути через phpinfo() в веб-версии (FastCGI)

Пример
<?php
  // сохранить как /var/www/html/ip.php
  phpinfo();
?>
После открытия http://localhost/ip.php найти строку "PHP Binary" (в секции PHP Variables).
PHP Binary => /usr/bin/php-cgi
PHP Path => /usr/bin/php-cgi

5. Windows: поиск через реестр и where

Пример
where php
# или через PowerShell:
Get-Command php | Select-Object Source
C:\php\php.exe

Если PHP не в PATH, проверьте реестр по пути HKLM\SOFTWARE\PHP\ или директорию установки (например, C:\xampp\php\php.exe).

6. Docker-контейнер: поиск внутри образа

Пример
docker run --rm php:8.2-cli php -i | grep "PHP Binary"
# или комбинированный поиск:
docker run --rm php:8.2-cli which php
PHP Binary => /usr/local/bin/php
/usr/local/bin/php

7. Проверка по базе пакетного менеджера (macOS)

Пример
brew --prefix php
# или реальный бинарник (если линк сделан)
readlink -f $(brew --prefix php)/bin/php
/usr/local/opt/php
/usr/local/opt/php/bin/php

8. Компиляция с нестандартным префиксом и верификация

Пример
./configure --prefix=/opt/php8.3 --with-config-file-path=/etc/php8.3
make -j4
sudo make install
/opt/php8.3/bin/php -r "echo PHP_BINARY;"
/opt/php8.3/bin/php

После установки рекомендуется проверить, что модули подключены: /opt/php8.3/bin/php -m.

9. Использование systemd unit file для php-fpm

Пример
systemctl status php-fpm
# в выводе будет ExecStart=/usr/sbin/php-fpm

Если нужно узнать путь к бинарнику php-fpm, выполните systemctl cat php-fpm и найдите строку ExecStart.

Где находится исполняемый файл PHP - comments

En
Php где установить (php)