2008-10-12 52 views

回答

11

您正在编辑更高级别的目录,因此PHP用户需要具有对该目录的写入权限。

0

尝试运行以下脚本:

print_r(posix_getpwuid(getmyuid())); 
print_r(pathinfo($YOUR_PATH)); 

看到那个返回什么。

2

这可能是因为apache不是父目录的所有者。重命名(或移动)文件与创建新文件基本相同。

2

澄清,PHP只能重命名目录,它有实际所有权过来:

-rwxrwxrwx user user temp/ 
-rwxr-xr-x apache apache temp2/ 
-rw-r--r-- user user script.php 

承担的script.php正试图重命名这两个目录:

// this operation fails as PHP (running as apache) does not own "temp", 
// despite having write permissions  
rename('temp', 'temp.bak'); 

// this operation is successful as PHP owns "temp2" 
rename('temp2, 'temp.bak'); 
+0

在安全模式下是正确的,但在所有其他情况下不需要所有权 - 具有适当权限的简单chmod就足够了。 – brezanac 2012-01-10 01:49:02

0

另一件事,可能有助于这些种类的情况是尝试降低权限。我已经看到了apache拒绝应用程序权限来执行某些操作的场合,因为它的权限也设置为。我的猜测是,这是为了鼓励良好的安全实践。

相关问题