apache下html子目录访问不了,权限问题:Apache如何访问我的主目录中的文件?

问题描述

我知道之前已经介绍过文件权限,但是我很难理解我的场景的概念。

我在旧的ubuntu安装上创建了文件。

我已将文件复制到我的新ubuntu安装中并将它们放入我的webroot中。

当我尝试运行文件(他们是PHP文件)时,我收到与权限相关的错误

为了解决这个问题,我认为它们仍然必须由前一个所有者拥有,所以我在目录上运行chown -R,并以我的用户名作为参数,以获取目录中所有文件的所有权。应该注意的是,新旧ubuntu安装之间的用户名是相同的。

当我再次尝试运行文件时,同样的问题:由于权限问题导致500错误。谁能告诉我我应采取的其他步骤?

我的apache安装的webroot在我的主文件夹中。如果我在我的webroot中创建新文件,它们也按预期工作,它只是导致问题的旧文件。

最佳解决办法

您的webroot上方的目录应该设置执行位以允许Apache进入目录。

如果您的webroot位于/home/user/htdocs,则/,/home,/home/user和/home/user/htdocs应设置执行位。

以上解决方案”works”,但它并不理想。如果您已创建文件夹,则Apache无法写入该文件夹。反过来也发生了。

这可以是”fixed”,通过设置umask 0007并将自己添加到Apache组(www-data,如果我没有记错),以便新创建的文件和文件夹可由组写入。

或者,您可以安装另一个Apache MPM:Apache2 MPM ITK(info on configuring)并调整配置,以便Apache在您的用户下运行。

次佳解决办法

如果您的服务器文档位于/home/$USER/public_html目录中,则需要运行

sudo chown -R www-data:www-data /home/$USER/public_html

将DocumentRoot文件夹的所有权授予用户www-data和组www-data。

然后,您可以将自己添加到组www-data

sudo adduser $USER www-data

最后,您需要使所有者(www-data用户)和您自己(作为www-data组的一部分)可写入DocumentRoot文件夹:

sudo chmod -R 775 /home/$USER/public_html

为方便起见,您可以制作名为public_html_fix.sh的脚本,内容如下:

#!/bin/bash

sudo adduser $USER www-data

sudo chown -R www-data:www-data /home/$USER/public_html

sudo chmod -R 775 /home/$USER/public_html

将其保存在/home/$USER/bin中,并使用以下命令使其可执行:

sudo chmod +x /home/$USER/bin/public_html_fix.sh

然后你可以随时调用它,从文件系统的任何地方你都会发现自己是这样的:

public_html_fix.sh

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值