我目前为我的组织管理8个不同的网站,并建立了一个中央管理网站来帮助管理所有网站上的内容。
我目前在管理网站上有一个文件上传器,可以将ZIP文件上传到服务器。这个脚本然后解压缩包,并将文件移动到服务器的不同部分。
问题是,当我通过浏览器上传文件时,它会将所有权分配给apache(对于用户和组)。当我尝试使用FTP覆盖文件时,这会给我带来问题。
我试图在上传/移动后立即更改上传文件的所有者,既使用PHPs本机的"chown"功能,也使用exec功能运行linux命令chown,但都失败了(PHPs本地chown显示"不允许操作"错误)
所以我的问题是:1) 我是不是搞错了?(我对文件所有权的了解有限)2) 我为什么不应该更改文件所有权?3) 有什么解决办法吗?
如果您想了解更多信息,请随时询问。
非常感谢
Phil
通过浏览器上传的文件的当前文件详细信息:
[file].php permissions: adfr (0644) Owner: Apache Group: Apache
通过FTP上传文件的文件详细信息:
[file].php permissions: adfr (0644) Owner: [ftp login name] Group: psacln
我做了一些与您非常相似的事情,但我不使用ftp,我使用scp,部分ssh。有了这个,你可以做这样的事情:
$> scp -rp /var/www/html/somedir/* 192.168.1.100:/var/www/html/somedir/.
通过这种方式,使用p标志可以告诉命令复制文件并保留权限、所有权和日期戳。r标志根据需要创建子目录和递归副本。
就像任何其他命令一样,您可以在脚本中放置几行scp以进行自动操作,但为了避免在服务器之间使用ssh生成的证书。