我正在设置我的网站,我需要移动一些文件。我创建了一个简单的 PHP 脚本,其中涉及 mkdir()、copy() 等操作...但我收到权限错误。
将受影响的文件夹设置为 777 后,一切正常,但在我的旧网站上我设置的是 755。
如果我在 Plesk 中的用户是 Johnnie,并且文件上的用户是 Johnnie(并且组是 psacln),那么 PHP 脚本是否应该具有访问权限?如果没有,我需要如何设置用户才能使我的浏览器能够移动文件?
答案1
访问是什么意思? - 查看文件属性; - 打开文件进行读取; - 打开文件进行写入; - 打开文件进行读/写; - 打开文件进行执行。
请注意,即使 PHP 应用程序中的用户名与 Unix 用户具有相同的名称,它也不相同。
请注意,apache/php 以 apache、www、www-data、nobody... 用户身份运行。这是在 apache 配置中配置的。使用以下命令查找:
egrep -r '^User|^Group' /etc/{apache*,http*}
在任何更改之前运行备份。
找到您的用户和 Apache 用户所属的共同组。如果没有,请创建一个。
将 DocumentRoot 中的文件和文件夹的组更改为以下组:
chown -R myuser:commongroup /var/www/
更改文件夹的 SUID,以便新文件归该组所有:
find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/
对于您想要授予 PHP 写入权限的文件夹和文件,请执行以下操作:
chmod g+w /var/www/folder/subfolder /var/www/folder/file.txt
答案2
如果您通过 cgi 或 mod-php 使用 php,且没有使用其他补丁/模块来处理权限,那么您的 php 脚本可能正在使用 Web 服务器的帐户执行。这通常是 www-data、nobody 或其他非 root 帐户。
您可能需要将 Web 服务器正在运行的用户添加到组中,或者创建一个包含 Web 服务器和任何其他需要访问的用户的组。