幼虫空白白屏

我的 Laravel 站点之前是可以工作的,我最近升级到了 Apache 2.4和 PHP 5.5.7。

现在当我转到 laravel.mydomain.example时,我得到了一个白色的空白屏幕,Apache 的错误日志、路由等应该没有什么问题,因为它以前是可以工作的。

当我向 /var/sites/laravel/public/.htaccess插入一个无效的行时,.htaccess正在加载,因为我得到了一个500。

这是我的 .htaccess:

$ cat /var/sites/laravel/public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>


RewriteEngine On


# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]


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

下面是我的虚拟主机指令:

DocumentRoot "/var/sites/laravel/public"
ServerName laravel.mydomain.example
<Directory "/var/sites/laravel/public">
AllowOverride All
allow from all
Options +Indexes
Require all granted
</Directory>

还有阿帕切特

$ /usr/local/apache2/bin/apachectl -S
VirtualHost configuration:
*:*                    is a NameVirtualHost
default server mydomain.example (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
port * namevhost mydomain.example (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
port * namevhost laravel.mydomain.example (/usr/local/apache2/conf/extra/httpd-     vhosts.conf:34)
ServerRoot: "/usr/local/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/usr/local/apache2/logs/error_log"
Mutex rewrite-map: using_defaults
Mutex default: dir="/usr/local/apache2/logs/" mechanism=default
PidFile: "/usr/local/apache2/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="daemon" id=1 not_used
Group: name="daemon" id=1 not_used
223670 次浏览

阿帕奇人

这个答案描述了你的情况吗? 升级到 Apache 2.4会带来 Apache 配置的一些变化。

Laravel

你是在查 Laravel 的日志还是 Apache 的日志?

自从升级到 Laravel 4.1以来,当应用程序无法写入日志位置时,出现了白屏“错误”(WSOD)。我总是通过使应用程序/存储目录可由 Apache 写来解决这个问题(可以写到“ www-data”,“ Apache”或者“ world-writable”组,这取决于您的服务器设置。

网络服务器用户

在 Ubuntu/Debian 服务器上,您的 PHP 可能以用户“ www-data”的身份运行。在 CentOS/RedHat/Fedora 服务器上,PHP 可能作为用户“ apache”运行。

确保您的文件由运行 PHP 的用户拥有:

# Debian/Ubuntu
$ sudo chown -R www-data /path/to/laravel/files


# CentOS/RedHat/Fedora
$ sudo chown -R apache /path/to/laravel/files

请注意,您可能没有以用户 www-data 或 apache 的身份运行。这取决于您的托管和设置!

幼虫4号

# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w app/storage


# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w app/storage

幼虫5 + (包括6)

# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w storage


# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w storage


#####
# The bootstrap/cache directory may need writing to also
##


# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w bootstrap/cache


# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w bootstrap/cache

相同行为的其他问题是在 PHP 5.5. x 中使用 Laravel 3。您必须更改一些 laravel 函数的名称“屈服() ,因为它是 php 5.5中的一个保留字

我在设置 Vagrant 机器时遇到了一些问题,真正对我有用的是执行一个:

chmod -R o+w app/storage/

从流浪者机器里面。

参考资料: https://laracasts.com/lessons/vagrant-and-laravel

另一个可能导致 WSOD 缺少‘ return’关键字的原因是:

return View::make('yourview');

而不是

View::make('yourview');

关于斐德洛对 Laravel 5及其新文件结构的回答,有一个更新:

$ sudo chmod -R o+w storage/

在我的例子中,重新启动 Apache 修复了问题。 Ubuntu/Debian:

sudo service apache2 restart

在 public/index.php 页面中尝试这样做

error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);

这个更改适用于我的本地主机 Ubuntu 服务器14.xx 设置

# Apply all permission to the laravel 5.x site folders
$ sudo chmod -R 777 mysite

还在现场进行了更改-可用的 httpd 设置为 Apache2设置

添加设置:

Options +Indexes +FollowSymLinks +MultiViews
Require all granted

有时这是因为 laravel 5.1需要 PHP > = 5.5.9。更新 PHP 可以解决这个问题。

下面的步骤解决了 Laravel5上的空白屏幕问题。

  • 转到 Laravel 根文件夹
  • 给予 bootstrap/cachestorage目录写权限

Sudo chmod-R 777引导/缓存存储器

  • .env.example重命名为 .env
  • 在 Laravel 根目录的终端/命令提示符中,使用以下命令生成应用程序密钥:

产生

这将生成加密密钥并更新 .env文件中的 APP_KEY

这应该能解决问题。

如果问题仍然存在,那么用上面的密钥生成命令生成的新密钥更新 config/app.php:

'key' => env('APP_KEY', 'SomeRandomString'),

'key' => env('APP_KEY', 'KEY_GENERATED_FROM_ABOVE_COMMAND'),

如果忘记将以下代码放到 handle函数的末尾,原因可能是 Middleware

return $next($request);

当我刚接触 Linux 的时候,我经常在 Laravel 项目中发现这个错误。 白色错误意味着错误,它可能有一些权限问题或错误。

你只需要遵循两个步骤,就会像冠军一样工作:)

(1)授予权限。从项目的根目录运行这些命令

(a) sudo chmod 777 -R storage
(b) sudo chmod bootstrap/cache

(2)如果您克隆了该项目或者从 github 中提取了该项目,那么运行

composer install

(3)正确配置您的.env 文件,您的项目就可以工作了。

对于那些即使在使存储可用于显示错误之后仍然得到空白页面的人来说,至少应该将这两行放在 public/index.php 的第一行,以查看正在发生的情况。对我来说,这个错误就是: 在第16行的/var/www/* * */config/database ase.php 中没有找到类‘ PDO’

error_reporting(E_ALL);
ini_set('display_errors', 1);

我在 CentOS 服务器上也遇到过类似的问题。通过本地机器上的端口8000使用 php artian serv 并访问它工作得很好,但是无法让我的远程机器加载特定的视图。我可以很好地返回字符串,并且正在加载一些视图。在我终于意识到这是 SELinux 的问题之前,我一直在追踪权限。我只是把它从强制性设置为允许性,它就起作用了。希望这能帮助其他可能遇到同样问题的人。

setenforce permissive

对我来说很奇怪,但是对我来说,我必须清理掉幼虫的幼虫窝来解决这个问题。

当我第一次使用 laravel + Ubuntu 14.04的时候也出现了同样的错误 我只需右键点击引导和存储文件夹 > > > 属性 > > 权限 > > 其他访问 > > > 更改为“创建和删除文件”更改附加文件的权限

谢谢你

这是从 Laravel 论坛得到的,但是如果您最近升级了 Laravel 版本,并且 PHP 版本和运行 nginx,请确保您已经更改了 nginx 配置文件以反映新的 PHP 版本。例如:

在您的 nginx 站点配置文件(这里:/etc/nginx/sites- 可用)中,更改

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;

我也有同样的问题。我已经将 chmod 文件夹更改为 Storage 文件夹。中填入数据库设置。但是没有解决问题。 我使用了 Laravel 5.5和 PHP 5.6,为了修复它,我去了(cpanel-> PHP Selector) ,然后改为 PHP 7.1,问题就解决了。

在正常情况下,错误应记录为 除非

脚本无法写入日志文件

  • 检查它的路径
  • 权限

或者在更高级别的检查应用服务器日志(如 Appache | | Nginx)上发生错误

或者是资源有限 比如 PHP ini 设置

memory_limit
max_input_time
max_execution_time

或者操作系统限制等等

除了存储和缓存文件夹中的权限问题以及 php 版本问题之外,还有其他原因导致显示空白页面时没有任何错误消息。

例如,我有一个没有任何日志和空白页面的 重申错误消息。 我自己的助手函数和供应商函数之间存在冲突。

我建议作为 一个起点,运行 artisan命令。例如:

php artisan cache:clear

如果有一个问题,它会在终端提示,你有一个 提示,你可以谷歌的解决方案。

运行这个命令解决了我的问题:

php artisan view:clear

我想一个空白的错误页面是某种程度的缓存。必须清除缓存。

当 Laravel 应用程序试图显示过多信息和 PHP 限制时,也会出现空白屏幕(例如,在一个页面上显示数万条数据库记录)。最糟糕的是,Laravel 日志中不会出现任何错误。您可能也不会在 PHP FPM 日志中看到任何错误。您可能会在 http 服务器日志中发现错误,例如 nginx 抛出类似 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted的内容。

简短提示: 在查询对象上添加 ->limit(1000),其中 1000是您的限制。

在我的例子中,我已经多次安装了 laravel,并且我确信已经正确地给出了文件夹写权限。

就像上面的大多数答案一样:

sudo chmod 777 -R storage bootstrap

错误是我的 nginx 配置来自 < strong > 官方文件

我只修改了复制后的域名,然后我得到了一个空白页。 我试着重新启动 nginxphp-fpm,但对我没用。

最后,我添加了这个线路配置来解决这个问题。

location ~ \.php$ {


# same as documentation ...


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

我希望我能帮助别人。

我还有一个选项,为什么空白页问题可能会发生。如果处于生产模式,并且通过 php artian (config: cache)缓存了配置文件,请尝试删除缓存文件,执行以下命令:

php artisan config:clear

或者手动删除它(bootstrap/cache/config.php)

我也面临着同样的问题后,做 composer update

我也试过安装 composer required monolog/monolog,但是没有用。

然后,我删除/卖方目录并运行 composer install,按照正常方式工作

基本上,它必须恢复我的独角戏和其他稳定的软件包版本回到以前。所以最好不要到 composer update

我注意到比较两个/供应商文件夹,发现 /vendor/monolog/monolog/src/Handler下的那些 classes文件在作曲家更新后丢失。

当我试图在我的服务器上运行 Laravel 5.8应用程序时,我遇到了这个问题,这个应用程序是使用 Vagrant Homestead 从本地开发上传的。过了一会儿,我发现我正在运行的服务器上的 dev 子域以某种方式设置为 PHP 5.6。

CPanel > MultiPHP Manager > 设置为 PHP 7.2

帮我修好了这个,希望能帮到别人。

用这个 . htaccess来解决

Options +ExecCGI
addhandler x-httpd-php5-cgi .php
Options -MultiViews
DirectoryIndex index.php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /
# 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]
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

面对 Laravel 5.8的空白屏幕。一切似乎都与存储和引导文件夹给予777权限罚款。开始

php artisan cache:clear

它显示了问题是 应用程序名称文件中的 留白

在没有错误的空白屏幕背后可能有很多原因。 我已经面对这个问题很多次,每当我想上传在共享托管 Laravel 项目。

原因: PHP 版本不正确

在我的案例中,问题是由于不正确的 php 版本。我在本地计算机中使用了 php 7.1版本,在共享主机 cpanel 中使用了 php 5.6版本。把版本从5.6升级到7.1对我来说很管用。

您可以从 cpanel 主页中的 multiphp Manager 更改 cpanel 中的 php 版本。

在我的案例中,空白屏幕问题只是一个简单的输入错误或者 env 文件中的错误字符。 我正在实现 socialite,所以当我为 Google + 设置.env 凭证时,如下所示:

G+_CLIENT_ID = Your G+ Client ID
G+_CLIENT_SECRET = Your G+ Client secret
G+_REDIRECT = 'http://localhost:8000/callback/google'

但是,. env 文件不能使用’+’符号,所以我必须进行以下更正:

GOOGLE_CLIENT_ID = Your G+ Client ID
GOOGLE_CLIENT_SECRET = Your G+ Client secret
GOOGLE_REDIRECT = 'http://localhost:8000/callback/google'

我希望这能帮你找到一个愚蠢的错误。

有时候在 Route.php 中

Route::get('/{id}', 'Controller@show'..

之前写的

Route::get('/add', 'Controller@add'..

当您开始从头开发控制器时,它可以是空方法 Controller::show()。在这种情况下,当请求 /add URL 时,您将得到空白页面。之所以会发生这种情况,是因为请求是由 /{id}路由处理的,而它的方法什么也不返回。

只要把 /add路线放在 /{id}之前

它显示了问题是 AppName 的. env 文件中的 White 空格

确保您的。Env 文件。这就是为什么我的电脑屏幕一片空白。

没有日志记录到屏幕上,也没有日志文件或 nginx 日志,只有一个空白屏幕。

一般来说,如果 Laravel显示你的白页没有错误,第一件事就是在 .evn文件中查找错误,我错了。

问题出现在 APP_NAME的.env 文件中

只是换了个人

APP_NAME=My Project Name

APP_NAME="My Project Name"

我花了将近两个小时才解决这个问题。 这些原因可以在答案中找到:

  • 删除.env 文件中的空格
  • 重写.htaccess
  • Chmod 777存储/引导文件夹
  • 删除 vendor文件夹并再次运行 composer install
  • 重新启动 apache/nginx 服务器
  • php artisan view:clear
  • php artisan cache:clear
  • php artisan route:clear

我什么都试过了,但还是不行。

Apache/nginx 服务器的默认端口不是 PORT 80。当您安装 webpack 时,它可能会因为 Skype 或系统服务的损坏而发生更改。 因此,您必须使用 yoursite.test:85,其中85是 apache/nginx 服务器的默认 PORT,而不是访问 localhost上的 yoursite.test