2013-03-05 886 views
0

执行由阿帕奇称为PHP脚本如下:PHP fopen()函数没有权限创建文件进行修改

$h = fopen(getcwd()."tmp.txt","w"); 
fprintf($h,"hi"); 
fclose($h); 

生成由我个人的用户ID与644组的权限所拥有的文件。但是,再次执行该脚本会导致错误,因为Apache/PHP以用户wwwrun身份运行,因此没有权限覆盖该文件或chmod它。

这些文件所在的目录位于我的主目录中,并具有777权限。我如何让PHP创建由wwwrun拥有的文件,或者使用666权限创建文件,或者执行其他操作,以允许它被PHP覆盖。

我很理想地寻找一种解决方案,它也适用于PHP通过外部程序使用exec函数调用该文件的情况;这似乎也遭受同样的问题,因为外部程序运行为wwwrun,但由外部程序创建的文件属于我的个人用户标识。

+0

退房'umask'。 – 2013-03-05 14:27:32

+0

Apache作为www-data运行,不可能创建一个拥有其他帐户的文件。允许非root程序将所有权更改为其他用户将是一个巨大的安全漏洞。是你的家庭目录sgid/suid(2777/4777)? – 2013-03-05 14:27:51

回答

0

事实证明,有问题的目录被挂载在不支持linux文件权限的文件系统上。