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 上,shell 命令可能应该使用ps

于 2014-10-08T07:46:25.907 回答
0

主机向其用户授予 root 访问权限并不常见。很可能,您无法访问 /var/www 下面的任何内容

于 2012-07-18T21:21:40.077 回答