laravel安装完成后,访问public目录,显示一片空白怎么回事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel安装完成后,访问public目录,显示一片空白怎么回事相关的知识,希望对你有一定的参考价值。

参考技术A 白屏没有错误提示一般是php.ini的display_errors没有启用的问题
所以首先确保display_errors已经是On的状态
然后打开Debug模式
在app/config/app.php中将’debug’=>false 改为’debug’=>true
这样如果是PHP或者配置问题就会在页面中显示
如果是框架或者程序问题,就可以在app/storage/logs/laravel.log中找到具体错误

Laravel 拒绝访问 /public 目录

【中文标题】Laravel 拒绝访问 /public 目录【英文标题】:Laravel deny access to /public directory 【发布时间】:2021-10-19 11:27:33 【问题描述】:

有人可以回答我: 在 laravel 中是否可以拒绝访问公用文件夹中的目录? 我了解公共目录中的所有内容都是公开的。但我需要在 /public 目录中放置一个文件夹,并将 index.html 文件放在其中,其中包含一些 css、js、图像。我需要正确显示 index.html 并防止未经授权的用户查看它。 如果有任何答案,我将不胜感激。

【问题讨论】:

【参考方案1】:

尝试根据您的要求设置该特定文件夹的权限。

简单设置:

chmod -R 权限文件夹路径/文件夹名称

您可以查看此链接以了解用于哪些权限的组合。 chmodcommand.com

【讨论】:

【参考方案2】:

问题是,/public 中的静态文件不是由 laravel 处理的,而是由您的服务器软件直接提供的。

如果您使用的是 apache2,您可以拒绝访问公共子文件夹,您可以在拒绝访问的目录中放置 .htaccess 文件:

public/custom/.htaccess

order deny,allow
deny from all

问题是,除非您使用基本身份验证,否则您无法授权外部访问这些文件。


为了处理复杂的授权并且不破坏 laravel 约定,我会将这些文件放在resources(甚至storage/app)内的文件夹中

resources
 |  custom
 |   | index.html
 |   | image.png
 |   | script.js
 |   | style.css

然后,在您的 web.php 中为原始文件夹中的所有内容创建通用路由:

Route::get('/custom/file?', [CustomFilesController::class, 'getFile'])

在控制器/路由内部,您可以:

执行您的授权 从资源(或存储)文件夹中检索文件 使用适当的内容类型标头响应它们

【讨论】:

非常感谢您的详细解答!至于目录 /public,我知道所有内容都在公共访问中,laravel 无法控制它。至于将文件夹放在不同的目录中,我已经这样做了。例如,放在目录/storage 中。但问题是css、js和图片文件没有显示,返回404错误。也许我没有正确地提供 index.html 文件。使用方法:File::get($path . '/index.html') 这样你只提供 index.html 文件。您应该收到所需的文件名作为输入并相应地返回

以上是关于laravel安装完成后,访问public目录,显示一片空白怎么回事的主要内容,如果未能解决你的问题,请参考以下文章

laravel5.6安装问题 phpstudy php7.21+nginx安装后访问public/index.php报错 提示缺少文件 如图

安装好laravel后是否要把站点根目录指向Public目录

Laravel 部署 安装到虚拟主机的方法

Laravel 拒绝访问 /public 目录

使用 .htaccess 防止通过 /public/ 目录访问 Laravel [重复]

完成一个Laravel项目的过程