我设置了一个虚拟主机,该主机使用mod_suexec
以与www-data
不同的用户身份运行PHP脚本。
<VirtualHost *:80>
ServerName my.server.com
DocumentRoot /srv/my-site
SuexecUserGroup webconfig webconfig
</VirtualHost>
但是,当我创建一个目录或文件(mkdir
,file_put_contents
)时,这些文件/目录www-data
为所有者。我也无法读取只能由webconfig
读取的文件。
我还注意到了这种奇怪的行为:这个php文件:
echo get_current_user()."n";
echo `whoami`."n";
echo exec('whoami')."n";
生成以下输出:
webconfig
www-data
www-data
mod_php5
实际上与mod_suexec
不兼容。如本文所述,您必须改用mod_suphp
和php-cgi
。缺点是这会降低性能。
适用于 Ubuntu 的简单解决方案是
apt-get install -y suphp-common, libapache2-mod-suphp
a2dismod php5
a2enmod suphp
链接的文章介绍了如何将mod_php5
用于某些虚拟主机,mod_suphp
用于其他虚拟主机。