PHP以用户Apache身份运行。您的FTP帐户正在以用户'fpadmin'运行。这就是业主不同的原因。你有没有试过chown()php函数(http://php.net/manual/en/function.chown.php)?这将更改文件/目录的所有者。
干杯
唉,我先下投票。这刺激..虽然这是一个愚蠢的回答..
好吧,所以我想了解你的问题/复制你的错误。这是我试过的,这里是我的结果。希望它至少对你有一些用处。
我有以下目录结构:
/var/www/public_html/test (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/index.php (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/ftp_owned.file (chmod = 644 (default), owned by 'ftpuser')
然后在index.php文件我有以下代码:
mkdir("./downvoted");
chmod("./downvoted", 0777);
$h = fopen("./i_am_so.sad", "x+");
fwrite($h, "attempting to redeem myself");
fclose($h);
rename("./i_am_so.sad", "./downvoted/i_am_so.sad");
rename("./ftp_owned.file", "./downvoted/ftp_owned.file");
在一个新的目录结构得到的:
/var/www/public_html/test (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/index.php (chmod = 777 via SSH, owned by 'ftpuser')
/var/www/public_html/test/downvoted (chmod = 0777 via PHP, owned by 'apache')
/var/www/public_html/test/downvoted/i_am_so.sad (permissions = 644 (default), owned by 'apache')
/var/www/public_html/test/downvoted/ftp_owned.file (permissions = 644 (default), owned by 'ftpuser')
仍然难过,因为我无法重现错误,也无法兑现自己。希望你可以发布你收到的错误(许可被拒绝?)或指出我的实验与你的应用程序有什么不同。
谢谢!我将php.ini错误报告设置为E_ALL,这正是返回的错误。奇怪的是,我有PHP(“apache”用户)创建目录和文件(或上传),但由于某种原因,文件夹和文件被分配给不同的用户... – Nick 2010-09-16 19:02:46