Как получить полный путь к интерпретатору php / binary без доступа к оболочке
Как я могу получить полный путь к интерпретатору php из скрипта php (без доступа к командной строке).
Что мне нужно сделать, так это:
$foo = "/usr/bin/php";
echo $foo;
Но сначала мне нужно получить путь, чтобы я мог назначить его фу.
Если у вас есть решение, которое работает как на Windows, так и на nix, еще лучше, но если нет, то nix будет в порядке.
Прежде чем вы спросите,
- спрашивать хозяина не может быть и речи
- нет доступа к оболочке
Проблема заключается в том, что использование чего бы то ни было выходы не работают. Например, PHP_BINDIR выведет /usr /bin, но использование/usr/bin / php не поможет. Полный код:
exec("php-cli $path_to_file > /dev/null 2>/dev/null &");
Но даже использование /usr/bin / php-cli не работает, хотя это говорит мне об этом. Я должен использовать:
exec("/opt/php52/bin/php-cli $path_to_file > /dev/null 2>/dev/null &");
Для этого конкретного хоста, например.
4 ответа:
Вы можете найти бинарный путь PHP с этой константой:
PHP_BINDIR
Начиная с PHP 5.4, вы можете получить путь к исполняемому файлу, фактически запущенному в данный момент, с этой константой:
PHP_BINARY
Пользователи Linux могут попробовать команду
whereis
.У меня была такая ситуация с PHP IDE.
whereis php
В Windows я бы предложил следующий фрагмент:
<?php $pid = getmypid(); $output = shell_exec(sprintf('tasklist /nh /fo csv /fi "PID eq %d"', $pid)); $processInfo = explode(',', $output); echo PHP_BINDIR . DIRECTORY_SEPARATOR . trim($processInfo[0], '"');
В unix команда shell, вероятно, должна использовать
ps