我正在尝试在本地 apache2 中部署我的 Laravel 应用程序,但是当尝试浏览时http://myapp.localhost.com/
出现以下错误:
Forbidden
You don't have permission to access / on this server.
Apache/2.4.7 (Ubuntu) Server at myapp.localhost.com Port 80
我创建了myapp.conf
虚拟/etc/apache2/sites-available
主机设置:
<VirtualHost *:80>
ServerName myapp.localhost.com
DocumentRoot "/home/user/projects/myapp/public"
<Directory "/home/user/projects/myapp/public">
AllowOverride all
</Directory>
</VirtualHost>
/etc/apache2/sites-enabled
并在(sudo ln -s ../sites-available/myapp.conf
)中创建符号链接
还编辑了/etc/hosts
文件并添加:
127.0.0.1 myapp.localhost.com
知道我为什么会收到此错误吗?尝试将应用程序部署到 时也遇到了同样的问题heroku
,它也使用了apache2
。
答案1
我错过了
Options Indexes FollowSymLinks Includes ExecCGI
在您的 myapp.conf 中。从 Apache-2.4 开始,使用 mod_authz_host 并且应该使用Require
(示例 )。Require all granted
顺便说一下...这个:
您无权访问此服务器上的/。
我记得在使用 httpd.conf 时,apache 是默认的。你确定正在sites-*/*
使用吗?
答案2
在您的 VirtualHost 中写入 DocumentRoot 以指向您主目录中的 Laravel 应用程序。此外,您还必须添加下面显示的目录,并使用您自己的路径。
<Directory /home/john/Laravel_Projects/links/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
第二步,您必须转到您的 Laravel 项目并运行以下命令。
sudo chmod -R 777 storage bootstrap/cache
最后重新启动 apache2:
sudo service apache2 restart