PHP - mkdir错误的拥有者

时间:2013-12-07 15:54:23

标签: php .htaccess mkdir ownership chown

我有一个简单的PHP脚本,可以创建一个文件夹,然后将某些文件复制到其中。文件夹(和复制的文件)具有所有755权限。问题是,它将用户设置为Apache。 现在我无法通过FTP删除或更改权限。我只能在DirectAdmin中“重置所有权”。在那里,我可以看到用户从“Apache”更改为“matthdc58”。

如何让PHP创建一个名为“matthdc58”的文件夹作为用户?我试过chown() - 失败了:

Warning: chown() [function.chown]: Operation not permitted in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 78

Warning: chown() [function.chown]: Operation not permitted in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 79

Warning: chown() [function.chown]: Operation not permitted in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 80

Warning: Cannot modify header information - headers already sent by (output started at /home/matthdc58/domains/hiddendomain.com/public_html/Home.php:78) in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 90

在我的.htaccess中,我也尝试过(似乎解决了别人的问题)php_flag safe_mode off,但没有占上风。


我的整个PHP脚本:

$dirtocreate = 'userdata/'.$_SESSION['uname'];
$oldumask = umask(0); 
mkdir($dirtocreate, 0755);
umask($oldumask);

copy('img/100x100.png', $dirtocreate.'/100x100.png');   
copy('img/64x64.png', $dirtocreate.'/64x64.png');   

//Verify correct owner
chown($dirtocreate, 'matthdc58');
chown($dirtocreate.'/100x100.png', 'matthdc58');
chown($dirtocreate.'/64x64.png', 'matthdc58');

//Verify correct permissions, just to be sure               
chmod($dirtocreate,0755);
chmod($dirtocreate.'/100x100.png',0755);        
chmod($dirtocreate.'/64x64.png',0755);

所以,只是为了澄清:

  • 我的PHP脚本将新文件夹的所有者设置为“Apache”。
  • PHP 脚本无法将所有者更改为“matthdc58”。
  • 现在,我无法编辑 该文件夹通过FTP,因为所有者是“Apache”。
  • 我只能使用“还原所有权”通过DirectAdmin恢复所有权 按钮。

2 个答案:

答案 0 :(得分:1)

请检查您是否已经chmodded并将您的目录:/home/matthdc58/domains/hiddendomain.com/public_html/添加到您的用户名中。 :)

答案 1 :(得分:0)

事实证明这与我使用的PHP版本有关 根据我的主持人Versio的推荐,我通过添加

来更改PHP的版本
<FilesMatch "\.php$">
AddHandler x-httpd-php54 .php
</FilesMatch>

到我的.htaccess文件。


我不认为这与其他人有关,因为这与权利有关,但你可以随时尝试 再次,感谢@LeSamAdmin帮助我!