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')
仍然很难过,因为我无法重现错误,也无法挽回自己。希望您可以发布您收到的错误(权限被拒绝?)或指出我的实验与您的应用程序有何不同。