【问题标题】:PHP. Get user home directory (for virtual hosting)php。获取用户主目录(用于虚拟主机)
【发布时间】:2013-12-12 05:05:33
【问题描述】:

我想在 PHP 中获取当前脚本用户(nginx/www/apache 等)的主目录。 我用

$output_message = shell_exec('echo ~');
var_dump($output_message);

它在我的本地服务器上正常工作,在亚马逊实例上。但它在虚拟主机上只输出“~”。

也许,您有获取当前用户主目录的有效解决方案吗?

提前致谢

【问题讨论】:

    标签: php shell


    【解决方案1】:

    我创建了可行的解决方案:

    $user = posix_getpwuid(posix_getuid())
    

    这会返回数组,例如

    Array
    (
        [name] => username
        [passwd] => ********
        [uid] => 501
        [gid] => 20
        [gecos] => Full Name
        [dir] => /home/username
        [shell] => /bin/bash
    )
    

    所以要访问用户主目录,它是$user['dir']

    【讨论】:

      【解决方案2】:

      在大多数常规服务器上,这些守护进程(apache、nginx 等)没有真正的“主目录”。

      如果您考虑“虚拟主机”,那将是不可能的,因为每个用户只能有一个主目录,但每个守护进程有多个虚拟主机。

      我猜你在找什么,是环境变量 DOCUMENT_ROOT(当前 vhost 文档的根目录)。

      $_SERVER['DOCUMENT_ROOT']
      

      【讨论】:

        【解决方案3】:

        使用$_SERVER['HOME'] 或者你试试

        $home = getenv("HOME");
        

        注意:这需要您通过命令行执行脚本。

        【讨论】:

        • getenv 返回 FALSE。 $_SERVER['HOME'] 不存在(注意:未定义索引:HOME)
        • @Anish 回答中的两个示例都要求您通过命令行执行脚本
        • 在windows上可以使用$home = getenv("USERPROFILE")
        猜你喜欢
        • 2017-07-22
        • 2014-11-04
        • 2012-01-27
        • 1970-01-01
        • 2014-06-09
        • 2015-12-03
        • 2012-04-26
        • 1970-01-01
        • 2017-10-24
        相关资源
        最近更新 更多