2

我目前为我的组织管理 8 个不同的站点,并建立了一个中央管理网站来帮助管理所有站点上的内容。

我目前在管理网站上有一个文件上传器,允许我将 ZIP 文件上传到服务器。该脚本然后解压缩包,并将文件移动到服务器的不同部分。

问题是,当我通过浏览器上传文件时,它会将所有权分配给 apache(对于用户和组)。当我尝试使用 FTP 覆盖文件时,这会给我带来问题。

我试图在上传/移动文件后立即更改上传文件的所有者,既使用 PHP 原生“chown”函数,也使用 exec 函数运行 linux 命令 chown,但都失败(PHP 原生 chown 显示“不允许操作”错误)

所以我的问题是:1)我是不是走错了路?(我对文件所有权的了解有限) 2)我有什么理由不应该更改文件所有权?3)有没有变通办法?

如果您想了解更多信息,请随时询问。

非常感谢

菲尔

通过浏览器上传的文件的当前文件详细信息:

[file].php      permissions: adfr (0644)    Owner: Apache    Group: Apache

通过 FTP 上传的文件的文件详细信息:

[file].php      permissions: adfr (0644)    Owner: [ftp login name]   Group: psacln
4

1 回答 1

1

我做的事情与你所做的非常相似,但我不使用 ftp,我使用 scp,部分 ssh。有了这个,你可以做这样的事情:

$> scp -rp /var/www/html/somedir/* 192.168.1.100:/var/www/html/somedir/.

通过这种方式,您可以使用 p 标志告诉命令复制文件并保留权限、所有权、日期戳。r 标志根据需要创建子目录和递归副本。

就像任何其他命令一样,您可以在脚本中放置几行 scp 以实现自动化,但为了避免密码,请在服务器之间使用 ssh 生成的证书。

于 2012-08-27T18:54:30.263 回答