我第一次在我的Ubuntu Linux本地主机上学习安装Apache 2,并使其与PHP5配合使用。
我注意到,每当我想要写入文件或目录时,我必须将目的地设置为chmod 777。
但是从我在第三方托管解决方案上工作的经验来看,通常允许我写入具有755权限的文件和目录。
我应该怎么做才能在我的本地主机上以755权限写入文件和目录?如果这个答案非常长,有人可以给我发送一个逐步指南的链接吗?
我第一次在我的Ubuntu Linux本地主机上学习安装Apache 2,并使其与PHP5配合使用。
我注意到,每当我想要写入文件或目录时,我必须将目的地设置为chmod 777。
但是从我在第三方托管解决方案上工作的经验来看,通常允许我写入具有755权限的文件和目录。
我应该怎么做才能在我的本地主机上以755权限写入文件和目录?如果这个答案非常长,有人可以给我发送一个逐步指南的链接吗?
以下是一些简单的规则,适用于大多数人使用 Apache 进行网站内容管理:
如果按照这两条规则操作,那么你就可以向由 Apache 提供服务的文件中进行写入了。我不确定你的文档根目录在哪里,但像下面这样做可能适用于大多数简单的安装:
$ sudo usermod $USER -a -G www-data
$ cd /var/www
$ sudo chown -R www-data:www-data .
您可能无法实现此操作,因为文件的所有者与尝试对文件执行操作的用户不同。
权限如下:
所有者-组-其他人
rwx-rwx-rwx
i.e. 111 = 7 which allows read/write and execute.
101 = 5 which is just read and execute
由于您登录的用户不是文件的所有者/组的一部分,因此无法写入该文件。
最后的 7(即 rwx-rwx-111(7))表示全局上每个人都有该文件的读/写访问权限。
如何解决
在Linux中,您可以使用chown或chgrp命令来实现所需的结果。
首先,您需要确定您的PHP代码运行为哪个用户。如果您正在使用Apache运行“worker”或“prefork” MPM(软件包名称为libapache2-mod-php5
)以及mod_php5
,那么这可能是www-data
。
只要在服务器内运行一个Web应用程序,这并不是什么大问题。但是,如果您运行多个应用程序(或由多个用户拥有的脚本),那么您就会遇到各种安全相关的问题。