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の下には何もアクセスできません