Как получить путь к двоичному файлу php на сервере, где он расположен

Я использую команду exec, как показано ниже в PHP:

exec("/usr/bin/php /path/to/Notification.php >> /path/to/log_file.log 2>&1 &");

В моей локальной среде (MAMP) я знаю путь установки PHP, поэтому могу заменить /usr/bin/php на /Applications/MAMP/bin/php/php5.4.10/bin/php. Но я не знаю, где находится установка PHP (двоичный файл PHP) на производственном сервере.


person Ponting    schedule 06.09.2013    source источник


Ответы (3)


Обычно это /usr/bin/php, но вы можете попытаться захватить и проанализировать вывод команды «whereis php» или «which php'».

Или еще лучше, используйте константу PHP_BINARY, если она доступна. Посмотрите здесь.

person alexg    schedule 06.09.2013
comment
Я хочу найти его на сервере (Производство), а не на локальном компьютере. - person Ponting; 06.09.2013
comment
Да, пусть ваш скрипт запускается whereis php на сервере, а затем анализирует вывод с помощью регулярного выражения, чтобы получить путь. - person alexg; 06.09.2013
comment
Вы можете объяснить, что такое регулярное выражение? - person Ponting; 06.09.2013
comment
Спасибо, чувак. Можешь сказать мне по умолчанию, где он находится на сервере? Потому что у меня нет полномочий проверять эту команду на сервере. - person Ponting; 06.09.2013
comment
@Ponting Это не команда, просто используйте константу PHP_BINARY в своем PHP-скрипте. - person alexg; 06.09.2013
comment
Если вы не можете его найти, то, вероятно, у вас PHP ‹5.4. Может попробовать использовать PHP_BINDIR . "/php". - person alexg; 21.09.2013

В большинстве случаев PHP_BINARY предопределенная константа должна выполнять свою работу.

Если вам нужно что-то более развитое, вы можете использовать компонент процесса Symfony, используя свой класс PhpExecutableFinder:

// composer require symfony/process

use Symfony\Component\Process\PhpExecutableFinder;

(new PhpExecutableFinder)->find();
person Gras Double    schedule 30.09.2015

Попробуйте выполнить эти два шага: updatedb (нужно запустить только один раз, чтобы обновить индекс местоположения) locate php | grep -P "/ php $"

Команда locate должна показать вам все файлы на сервере с «php» в имени файла или имени папки. Канал «grep» фильтрует результаты до тех элементов, которые заканчиваются на «/ php».

person Prashant D. Kamthe    schedule 10.01.2020