Apache 虚拟主机不工作(错误 403)

Apache 虚拟主机不工作(错误 403)

我已经在我的 ubuntu 14.04 上安装了 apache2、php 和 mysql 服务器并且进行了测试,一切都按预期运行。

我有一个使用 codeigniter 创建的应用程序,之前是在 mac osx 上开发的,因此我创建了以下内容以便在我的 ubuntu 上运行它:

在 sites-available 中创建新的站点配置文件,名为 payroll-v1.conf,如下所示:

<VirtualHost *:80>
ServerName  payroll.v1
DocumentRoot /home/ahmed-saber/workspace/payroll-v1/

<Directory /home/ahmed-saber/workspace/payroll-v1/>
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory> 

</VirtualHost>

将以下行添加到 etc/hosts

127.0.0.1   payroll.v1

尽管我的应用程序无法正常工作,并且即使我尝试访问任何静态 html 页面进行测试,也总是输出 403 forbidden

答案1

403 错误意味着 Apache 无法访问您的页面。

按照你的做法进行设置chmod -R 755,使系统上的每个人都可以访问它——每个用户、程序、守护进程等等。此外,您已通过这种方式使所有文件可执行(请参阅或者有关 Linux 上的权限和可执行文件的更多信息)。


更安全但更简单的解决方案是将自己添加到 Apache 的组(在 Ubuntu 中是www-data),然后将您的 Apache 工作区更改为该组:

sudo adduser ahmed-saber www-data
sudo chown .www-data /home/ahmed-saber/workspace/
chmod 750 /home/ahmed-saber/workspace/

为了更安全的方法,您可以使用访问控制列表,这可能会稍微复杂一些。

在这种情况下,您可以随时检查 Apache 的错误日志 ( /var/log/apache2/error.log)。如果您正在开发网页,您可以保持一个终端窗口打开,并“实时查看”日志(error.logaccess.log或任何其他内容),如下所示:

tail -f /var/log/apache2/error.log

答案2

您需要添加一行

ServerName  payroll.v1

在您的VirtualHost定义中告诉 Apache 此 VirtualHost 使用的主机名。

答案3

通过运行以下命令解决了该问题

sudo chmod -R 755 /home/ahmed-saber/workspace/*

由于一些 php 错误,页面也变成空白

相关内容