Как я могу получить полный путь к php-интерпретатору из php-скрипта (без доступа к командной строке).
Что мне нужно сделать:
$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 &");
Например, для этого конкретного хоста.
Бинарный путь 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 команда оболочки должна, вероятно, использовать ps
его не является общим для хоста, чтобы предоставить root доступ к его пользователям. Скорее всего, вы не можете получить доступ к чему-либо ниже / var / www