Apache:根据文件夹设置不同的用户

时间:2014-07-09 16:04:24

标签: php apache

我已经搜索了一下,但我没有任何帮助我的东西。

我在LAMP环境中工作。我的网站的文档根目录在/ var / www上,我已经将Apache配置为与用户“vendor”一起运行。

现在,我已经创建了一个子文件夹/ var / www / plugins,我希望这个子文件夹的页面上的任何http请求都可以作为“客户端”执行。目标是将插件系统用于我的客户端,但我不希望他们看到项目核心的代码。因此,如果他的代码是由另一个用户执行的,我可以设置文件的权限,以选择我让他包含和阅读的文件。

我试过使用UserDir指令,但是当我调用php函数get_current_user()时, 我还有“供应商”。

请帮助我;(

1 个答案:

答案 0 :(得分:0)

解决方案是使用apache模块suPHP。安装它,使用命令

启用它
a2enmod suphp

然后,要进行配置,您必须执行以下操作:

1.在apache2.conf中,在文件末尾添加以下行:

LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so

2.在文件/etc/apache2/mods-available/suphp.conf

<IfModule mod_suphp.so>
    AddHandler application/x-httpd-php .php
    AddHandler application/x-httpd-php5 .php

    suPHP_AddHandler x-httpd-php
    suPHP_AddHandler x-httpd-php5

    suPHP_Engine on

#Use a specific php config file (a dir which contains a php.ini file)
#   suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type <mime-type>.
#   suPHP_RemoveHandler <mime-type>
</IfModule>

3.在文件/etc/suphp/suphp.conf

[handlers]
;Handler for php-scripts
application/x-httpd-php5="php:/usr/bin/php5-cgi"
application/x-httpd-php="php:/usr/bin/php5-cgi"

4.在虚拟主机文件中,对于要与其他用户执行的目录:

<Directory "/your/folder">
        php_admin_flag engine off
        suPHP_Engine on
        suPHP_AddHandler application/x-httpd-php5
        suPHP_AddHandler application/x-httpd-php        
</Directory>

这样做,当您在此文件夹中执行php文件时,执行者将成为该文件的所有者。

感谢EJEHardenberg,你的评论让我找到了这个问题的答案。