Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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
PHP mkdir和apache所有权_Php_Apache_Mkdir_Owner_Chown - Fatal编程技术网

PHP mkdir和apache所有权

PHP mkdir和apache所有权,php,apache,mkdir,owner,chown,Php,Apache,Mkdir,Owner,Chown,有没有办法设置在apache下运行的php来创建文件夹,该文件夹由创建它的程序的所有者拥有,而不是由apache拥有 它使用word press创建新文件夹以上载到,但这些文件夹归apache.apache所有,而不归运行它们的站点所有。使用ostickets也会发生这种情况。目前,我们必须通过SSH连接到服务器并对文件夹进行chmod,但似乎在某个地方会有一个设置覆盖任何执行此操作的程序之外的所有权。不是直接的,不是。除非您是root用户,否则您不能将文件的所有权“放弃”给其他用户。您可以研究

有没有办法设置在apache下运行的php来创建文件夹,该文件夹由创建它的程序的所有者拥有,而不是由apache拥有


它使用word press创建新文件夹以上载到,但这些文件夹归apache.apache所有,而不归运行它们的站点所有。使用ostickets也会发生这种情况。目前,我们必须通过SSH连接到服务器并对文件夹进行chmod,但似乎在某个地方会有一个设置覆盖任何执行此操作的程序之外的所有权。

不是直接的,不是。除非您是root用户,否则您不能将文件的所有权“放弃”给其他用户。您可以研究使用“”apache指令强制特定vhost作为特定用户/组运行。有了它,Apache/PHP将创建任何具有适当所有权的文件

检查PHP函数

另一种方法是将Apache用户和“客户用户”放入一个新组中。另外,目录应该使用粘性位
SGID
,这样每个新文件都将组分配给这个新组。这样,Web服务器和“客户用户”可以毫无问题地处理文件

[17:57] progman@proglap /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 ..
正如您所看到的,目录获得了stick位
SGID
,所有者是我(
progman
)所在的“用户”组。否如果其他用户添加文件,则组会自动设置为此组

[17:55] proglap ~ # touch /tmp/test/x
这是从根目录执行的。现在我们得到:

[17:57] progman@proglap /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
,这样I就可以删除它

[18:00] progman@proglap /tmp/test $ rm x
rm: remove write-protected regular empty file `x'? y
[18:01] progman@proglap /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
,要比处理root访问和在服务器上启用
chown
安全模式要好。函数
mkdir()
创建的文件夹的所有者(“apache”、“none”和…)与当前脚本所有者不同。脚本无法与其他所有者(与当前脚本所有者不同)将文件上载(移动、复制)到该文件夹中

禁用
safe_模式
,这样就可以工作了

有关详细信息,请参阅


另外,使用enable
safe\u模式
你不能在php中使用
chmod()
函数。

如果不是由超级用户运行,这个函数将失败。以防万一其他人认为这可能是一种方法(使用mpm\U Percild\u模块)-我确实认为:从链接来看:这个模块没有功能。此模块的开发尚未完成,当前未处于活动状态。除非您是愿意帮助修复Percild的程序员,否则不要使用它。警告:从PHP5.3.0开始,此功能已被弃用,并从PHP5.4.0开始删除。