LAMP服务器上可以访问的Laravel Public文件夹

时间:2015-06-08 05:14:09

标签: php apache laravel lamp

我急需帮助在LAMP服务器上设置我的laravel项目。 到目前为止,我已经测试了我的" Pretty URL"在我的localhost xampp服务器上没有任何问题。现在,我正在尝试在实际的LAMP服务器上进行设置,我遇到了问题

到目前为止,我已经安装了LAMP服务(Ubuntu,Apache2,MYSQL,PHP5(带curl和mcrypt))。目前我在我的主目录中有一个laravel项目,其中包含一个符号链接到我的/ var / www / html文件夹中的公共文件夹,如... projectsymlink

我已使用以下配置

更改了我的/etc/apache2/apache2.conf
<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
       AllowOverride None
       Require all granted
</Directory>

<Directory /var/www/html>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
</Directory>

然后我使用命令sudo a2enmod rewrite并根据laravel文档中的说明编辑了我的.htaccess文件。

最后,我重新启动了我的apache服务:sudo service apache2 restart,当我尝试转到&#34; mydomain.com/public"我收到403禁用错误。

有没有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

关于Apache配置,似乎没问题。我更喜欢禁用索引(以防止目录列表)和MultiViews(以防止隐式文件名模式匹配)。

<Directory /var/www/html>

    Options +FollowSymLinks -MultiViews -Indexes
    AllowOverride All
    Require all granted

    #some general directives could be handy here also
    <FilesMatch "\.(png|jp?g|gif|ico|mp4|wmv|mov|mpeg|css|map|woff?|eot|svg|ttf|js|json|pdf|csv)">
            ExpiresActive on
            ExpiresDefault "access plus 2 weeks"
    </FilesMatch>

</Directory>

问题似乎与权限相关。默认情况下,Apache运行为www-data:www-data。这可以在envvars中更改(更改后应Apache重新启动)或在作为编译时选项提供时更改。 /etc/apache2/envvars

...
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
...

然而,更好的方法是

  • 使用/var/www/html
  • www-data组更改为sudo chown :www-data /var/www/html
  • 使用/var/www/html2770的模式更改为sudo chmod 2770 /var/www/html。由于Apache需要执行权限才能访问目录。将此命令递归地应用于其他目录
  • public 目录静态文件的模式更改为2660以确保安全措施