我目前为我的组织管理了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
答案 0 :(得分:1)
我做的事与你做的非常相似,但我不使用ftp,我使用scp,部分ssh。有了这个,你可以这样做:
$> scp -rp /var/www/html/somedir/* 192.168.1.100:/var/www/html/somedir/.
这种方式使用p标志告诉命令复制文件并保留权限,所有权和日期戳。 r标志根据需要和递归副本创建子目录。
就像任何其他命令一样,您可以在脚本中放置几行scp来自动化,但要避免密码在服务器中使用ssh生成的证书。