Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有shell访问的情况下获得php解释器/二进制文件的完整路径_Php_Path_Interpreter - Fatal编程技术网

如何在没有shell访问的情况下获得php解释器/二进制文件的完整路径

如何在没有shell访问的情况下获得php解释器/二进制文件的完整路径,php,path,interpreter,Php,Path,Interpreter,如何从php脚本(无命令行访问)获取php解释器的完整路径 我需要做的是: $foo = "/usr/bin/php"; echo $foo; 但是我需要先得到路径,这样才能将其分配给foo 如果您有一个在Windows和nix上都能工作得更好的解决方案,但如果没有,nix就可以了 在你问之前 问主人是不可能的 没有外壳访问权限 问题是使用它输出的任何东西都不起作用。例如,PHP_BINDIR将输出/usr/bin,但使用/usr/bin/PHP没有帮助。完整代码为: exec("php-cl

如何从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_BINARY
    
    从PHP 5.4开始,您可以使用以下常量获取当前实际运行的可执行文件的路径:

    PHP_BINDIR
    
    PHP_BINARY
    

    主机向其用户授予root访问权并不常见。最有可能的情况是,您无法在Windows上访问/var/www

    下的任何内容。我建议您使用以下代码片段:

    <?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], '"');
    

    Linux用户可以尝试
    whereis
    命令

    我在使用PHP IDE时遇到了这种情况

    whereis php
    

    它不也在$\u服务器中吗?我会去检查一下“问主人是不可能的”——这在技术上也意味着吗?:)-可能的重复我不能问主持人,因为我不知道它会提前主持什么。此代码用于插件。谢谢Brad,但请查看编辑后的问题以获得进一步澄清。@Chris81,如果您需要使用web服务器正在使用的二进制文件以外的二进制文件,则需要知道其路径。web服务器不是读心器,只知道它配置了什么。谢谢。我恐怕是这样的。请看-这两个常量都不能可靠地提供当前调用环境(Windows或Linux)中PHP可执行文件或版本的路径。@Jake您意识到有时运行内容的二进制文件是web服务器,对吗?这就是动态加载模块的工作方式。上面是针对脚本在PHP5.3及以下版本下运行的情况。当然,如果PHP_BINARY const可用(从PHP5.4+开始),它会更容易、更有效。