it-swarm.com.ru

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

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

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

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

Но мне нужно сначала найти путь, чтобы я мог назначить его для foo.

Если у вас есть решение, которое работает как на Windows, так и на nix, даже лучше, но если нет, то nix подойдет.

Прежде чем спросить,

  1. Спрашивать хозяина не может быть и речи
  2. Нет доступа к Shell

Проблема в том, что использование того, что он выводит, не работает. Например, 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 &");

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

12
Chris81

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

PHP_BINDIR

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

PHP_BINARY

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

29
Brad

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

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

whereis php
5
parera riddle

На 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

3
user725408

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

0
Pablo Mescher