Подтвердить что ты не робот

Как получить полный путь к php-интерпретатору/двоичному файлу без доступа к оболочке

Как я могу получить полный путь к php-интерпретатору из php script (без доступа к командной строке).

Что мне нужно сделать:

$foo = "/usr/bin/php";
echo $foo;

Но мне нужно сначала получить путь, чтобы я мог назначить его 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 &");

Для этого конкретного хоста, например.

4b9b3361

Ответ 1

Вы можете найти двоичный путь PHP с этой константой:

PHP_BINDIR

Как и в случае с PHP 5.4, вы можете получить путь к исполняемому файлу, выполняемому в настоящий момент с этой константой:

PHP_BINARY

http://php.net/manual/en/reserved.constants.php

Ответ 2

Пользователи Linux могут попробовать команду whereis.

У меня была такая ситуация с PHP IDE.

whereis php

Ответ 3

В 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

Ответ 4

его не является общим для хоста, чтобы предоставить root доступ к его пользователям. Скорее всего, вы не можете получить доступ к чему-либо ниже/var/www