Laravel 在本地 ubuntu 20 中显示空白页
Posted
技术标签:
【中文标题】Laravel 在本地 ubuntu 20 中显示空白页【英文标题】:Laravel show blank page in local ubuntu 20 【发布时间】:2021-12-11 23:33:10 【问题描述】:我正在使用 ubuntu 20,laravel 项目使用 php artisan serve 运行,但是当我使用此 URL laravel-local.com 访问该站点时,它显示空白页
无法得到任何错误
网站可用
<VirtualHost *:80>
ServerAdmin admin@MyWebsite.com
DocumentRoot /var/www/html/laravel-local.com/public
ServerName laravel-local.com
<Directory /var/www/html/laravel-local.com/public>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>
我尝试了什么
-
授予项目 777 访问权限
更改所有权
删除存储/框架内的文件夹
更改存储文件夹权限
composer dump-autoload、php artisan 缓存和配置清除
删除公用文件夹中的 .htaccess 文件
我尝试了以上所有步骤仍然是一个空白页
根文件夹中的.htaccess 文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
公用文件夹中的.htaccess
<IfModule mod_rewrite.c>
Options -Indexes
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %HTTP:Authorization .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
</IfModule>
【问题讨论】:
这是您拥有的唯一.htaccess
文件吗?它到底在哪里?您收到的 HTTP 响应是什么?
有2个.htaccess文件,一个在根目录,一个在public目录
根据您的 vHost 配置,/public
文件夹是“根文件夹”。这就是我在回答中提到的。您的特定配置不需要两个 .htaccess
文件。
你怎么知道响应空白页的是“Laravel”而不是 Apache? HTTP 响应代码是什么?服务器的错误日志是否报告了什么?
您可以从浏览器开发工具的“网络”选项卡中获取状态代码。 (这确实是帮助诊断此类问题的第一个位置。)
【参考方案1】:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
您不需要像这样的.htaccess
文件(需要进入/public
目录上方 的目录中),因为您已经将/public
目录配置为DocumentRoot
在服务器配置中。
如果您还删除了/public
子目录中的.htaccess
文件,那么这将导致重写循环(500 错误)。
您只需要文档根目录中的标准 Laravel 前端控制器(.htaccess
文件),即。在/public
子目录中。
但是,您应该在 vHost(<Directory>
容器)或 Laravel 主文件的顶部(.htaccess
内)定义 DirectoryIndex
(如果尚未在服务器配置中设置) 987654333@ 文件夹)。如果没有定义,那么对 Laravel 目录本身(主页)的请求将不会通过 Laravel 路由,并且可能会导致来自 Apache 的 403 Forbidden 响应(或者更糟的是,如果启用了Indexes
,则会出现目录列表)。
例如:
DirectoryIndex index.php
【讨论】:
你的意思是删除根目录下的.htaccess文件? 是的,但您似乎称之为“根目录”的目录实际上是 (文档)根目录的目录。您只需要/public
目录(现在是服务器配置定义的“根目录”)中的.htaccess
文件。您还需要在某处定义DirectoryIndex
。我已经更新了我的答案。如果未定义,则访问根目录时会收到 403。
在顶部的public/.htaccess中添加这一行,空白页显示
laravel-local.com/index.php/login 显示(空白页面),但是当我使用 laravel-local.com/login 访问该页面时,它显示 404(在此服务器)
这种行为与.htaccess
(即mod_rewrite)不做任何事情一致 - 您的服务器上是否安装了mod_rewrite?您应该删除 <IfModule mod_rewrite.c>
... </IfModule>
包装器 - 是否出现错误?以上是关于Laravel 在本地 ubuntu 20 中显示空白页的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 14.04 上的 Laravel 5.1 本地主机错误
我在 Ubuntu 20.04 上收到“laravel:找不到命令”
尝试在 ubuntu 20.04 上安装 php-mbstring
Laravel Sail 不会在 Ubuntu 20.04 上构建 - groupadd:无效的组 ID 'sail'
在 laravel 应用程序、Apache、Ubuntu 20.04 上安装 Certbot 软件并配置 HTTPS 后 HTTPS:// 链接断开 |数字海洋