我希望我的PHP软件能够自动更新。为此,我需要PHP能够写入现有和不存在的文件(创建)。如果我只是将目标文件CHMOD为0777然后写入它,它总能工作吗?或者PHP / Apache / wtvr进程是否需要是文件的所有者?
有时当人们使用FTP帐户上传时,所有者可能与PHP流程不同,这是一个问题吗?
编辑:我正在构建一个PHP应用程序,我不知道应用程序将在哪些配置上运行,我无法修改任何服务器相关设置。我可以做PHP可以做的事情,比如chown(),chmod()。
答案 0 :(得分:2)
我有一台服务器,当通过FTP上传文件时,文件的所有权变为ftp用户,这在过去曾造成一些权限问题。
我们使用群组来解决这个问题
例如,您可以创建一个用户组来访问文件,并将apache和每个ftp用户添加到该组中:
usermod -a -G appUpdaters www
usermod -a -G appUpdaters ftp1
usermod -a -G appUpdaters ftp2
etc...
然后你可以将文件/文件夹chown到用户+组并chmod到775
chown www.appUpdaters foldername
chmod 775 foldername
这样,如果所有权更改为ftp1.appUpdaters或ftp2.appUpdaters,其他用户仍可以写入该文件。
就像我说的,我似乎不需要在我使用的所有服务器上使用它,所以我猜你是否依赖于你的服务器配置。如果您决定使用群组,我发现此链接有时会派上用场
答案 1 :(得分:1)
将要上传的文件夹设为由www服务器拥有的文件夹。然后你的PHP脚本将能够写入该文件夹,如果它是chmodded 755。
# chown www somefolder
# chmod 755 !$
(不要在www拥有的网络文件中制作其他内容。)