Как получить полный путь к интерпретатору 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
в 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 команда оболочки, вероятно, должна использовать ps
его не часто для хоста, чтобы дать root-доступ своим пользователям. Скорее всего, вы не можете получить доступ ни к чему ниже /var / www