14

phpスクリプトからphpインタープリターへのフルパスを取得するにはどうすればよいですか(コマンドラインアクセスなし)。

私がする必要があるのは:

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

しかし、foo に割り当てることができるように、最初にパスを取得する必要があります。

Windowsとnixの両方でさらにうまく機能するソリューションがある場合は、そうでない場合はnixで問題ありません.

質問する前に、

  1. ホストに聞くのは論外
  2. シェルアクセスなし

問題は、それが出力するものを使用しても機能しないことです。たとえば、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

4 に答える 4

30

この定数を使用して、PHP バイナリ パスを見つけることができます。

PHP_BINDIR

PHP 5.4 以降、実際に実行中の実行可能ファイルへのパスは、次の定数で取得できます。

PHP_BINARY

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

于 2012-07-18T20:58:40.213 に答える
7

Linux ユーザーはwhereisコマンドを試すことができます。

PHP IDEでこの状況が発生しました。

whereis php
于 2015-11-13T04:32:14.073 に答える
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

于 2014-10-08T07:46:25.907 に答える
0

ホストがそのユーザーに root アクセスを与えることは一般的ではありません。ほとんどの場合、/var/www 以下にはアクセスできません。

于 2012-07-18T21:21:40.077 に答える