Где находится исполняемый файл 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.