有没有一种方法来设置PHP apache下运行创造与创造,而不是由阿帕奇所拥有它由程序的所有者拥有该文件夹的文件夹?PHP的mkdir和Apache所有权
使用word的时候按下它由他们在运行网站创建新的文件夹上传到但这些都是apache.apache拥有,不,这也正好利用ostickets。现在,我们必须SSH进入服务器并chmod该文件夹,但似乎会有一个设置来覆盖任何程序以外的所有权。
有没有一种方法来设置PHP apache下运行创造与创造,而不是由阿帕奇所拥有它由程序的所有者拥有该文件夹的文件夹?PHP的mkdir和Apache所有权
使用word的时候按下它由他们在运行网站创建新的文件夹上传到但这些都是apache.apache拥有,不,这也正好利用ostickets。现在,我们必须SSH进入服务器并chmod该文件夹,但似乎会有一个设置来覆盖任何程序以外的所有权。
Safe_mode
是打开你的服务器上。函数mkdir()
创建与拥有者(“apache”,“none”,..)不同的当前脚本所有者的文件夹。而且脚本无法将文件上传(移动,复制)到另一个所有者的文件夹中(这不像当前脚本所有者)。
禁用safe_mode
,这将是工作。详情请参阅http://php.net/manual/en/features.safe-mode.php。
P.S.启用safe_mode
您不能在php中使用chmod()
函数。
不直接,没有。除非您是root用户,否则您不能“放弃”文件的所有权给其他用户。您可以使用“AssignUserID”apache指令进行调查,以强制该特定虚拟主机作为特定用户/组运行。与阿帕奇/ PHP将创建任何文件与适当的所有权
万一别人认为这可能是去(使用mpm_perchild_module)的方式 - 这是我没有想到:从链接:**此模块的功能。这个模块的开发并不完整,目前不活跃。除非你是一个愿意帮助解决它的程序员,否则不要使用perchild。** – Jim 2017-10-05 16:48:11
另一种方法是把apache用户和“客户用户”在一个新的组。另外该目录应该使用粘性位SGID
,这样每个新文件都将该组分配给这个新组。通过这种方式,网络服务器和“客户用户”可以用文件的工作没有任何问题
[17:57] [email protected] /tmp/test $ ls -al /tmp/test
total 9
drwxrwsr-x 2 root users 48 Apr 1 17:55 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
正如你所看到的目录得到了粘滞位SGID
和业主是“用户”组中,我(progman
)上午。如果其他用户添加文件,则该组自动设置为该组
[17:55] proglap ~ # touch /tmp/test/x
这是从根目录执行的。现在,我们得到:
[17:57] [email protected] /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x 2 root users 72 Apr 1 17:59 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
-rw-r--r-- 1 root users 0 Apr 1 17:59 x
正如你看到添加的文件是从发根,但组设置为users
和这样我可以将其删除
[18:00] [email protected] /tmp/test $ rm x
rm: remove write-protected regular empty file `x'? y
[18:01] [email protected] /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x 2 root users 48 Apr 1 18:01 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
请记住,你仍然需要改变chmod
,如果你想编辑文件作为rw-r--r--
只是组读访问。但更改chmod
,甚至可能与umask
一起工作,比处理根访问和使用chown
要好。
这工作三河 - 谢谢 – 2010-04-10 10:00:56
**警告此功能已从PHP 5.3.0和从PHP 5.4.0删除截至**。** – Jim 2017-10-05 16:54:57