Laravel 在 Ubuntu 和 php7.4 我只能看到包含文件和文件夹的页面

Laravel on Ubuntu and php7.4 I can see only page with files and folders

我在 Ubuntu 上安装了 Laravel 和 PHP。 但是当我在浏览器中输入服务器的 ip 时,我只能看到文件和文件夹。

Ubuntu16.04,php7.4,apache2

这是我的文件夹/var/www/html/myproj/:

root@srv:/var/www/html/myproj# ls
CHANGELOG.md  bpl            laradock      routes      webpack.mix.js
README.md     composer.json  package.json  server.php
app           composer.lock  phpunit.xml   storage
artisan       config         public        tests
bootstrap     database       resources     vendor

我还需要做什么?


这是 laravel.conf 文件,位于 /etc/apache2/sites-available:

<VirtualHost *:80>
    ServerName yourdomain.tld

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/myproj/public

    <Directory /var/www/html/myproj>
        AllowOverride All
        <RequireAll>
            Require ip 127.0.0.1 xxx.xx.xx.xx
        </RequireAll>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

.htaccess 看起来像这样:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

将 nginx 虚拟主机文件配置为指向 /public 文件夹并在虚拟主机文件中添加 laravel 重写规则

假设您使用的是 Apache2,有几件事要做。 首先,尝试在浏览器中打开public路径,例如:http://localhost/public

如果问题仍然存在,请在您的服务器配置中验证是否处理了 .htaccess 文件,此 属性 必须在 apache2 配置中设置:

 AllowOverride All

以下是默认 Web 服务器文件夹的示例:

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

一般这个值默认设置为None,所以改成All

但是,为了确保你能做到这一点,你必须激活 mod_rewrite 扩展,所以在 linux 终端中输入:

sudo a2enmod rewrite
sudo service apache2 restart

如果您使用的是 nginx,请尝试以下设置:

server {
    listen         80 default_server;
    listen         [::]:80 default_server;
    server_name    example.com www.example.com;
    root           /var/www/html/myproj/public;
}