我的laravel网站之前正在运行,我最近升级到Apache 2.4和PHP 5.5.7。
现在,当我去laravel.mydomain.com时,我得到一个白色的空白屏幕,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.com
<Directory "/var/sites/laravel/public">
AllowOverride All
allow from all
Options +Indexes
Require all granted
</Directory>
和apachectl -S
$ /usr/local/apache2/bin/apachectl -S
VirtualHost configuration:
*:* is a NameVirtualHost
default server mydomain.com (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
port * namevhost mydomain.com (/usr/local/apache2/conf/extra/httpd-vhosts.conf:25)
port * namevhost laravel.mydomain.com (/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
答案 0 :(得分:215)
this answer是否描述或帮助您的情况?升级到Apache 2.4会带来Apache配置的一些变化。
你在检查Laravel的日志还是Apache的日志?
自升级到Laravel 4.1以来,当应用程序无法写入日志位置时,我遇到了白屏“错误”(WSOD)。我总是通过使Apache可写的应用程序/存储目录(可写入“www-data”,“apache”或全局可写的组)来解决这个问题 - 这取决于您的服务器设置。
在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身份运行。这取决于您的托管和设置!
# 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
# 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
答案 1 :(得分:63)
对于Laidevel 5及其新文件结构的fideloper答案的更新是:
$ sudo chmod -R o+w storage/
答案 2 :(得分:23)
以下步骤解决了Laravel 5上的空白屏问题。
storage
和.env.example
目录sudo chmod -R 777 bootstrap / cache storage
.env
重命名为APP_KEY
php artisan key:generate
这将生成加密密钥并更新.env
文件中config/app.php
的值
这应该可以解决问题。
如果问题仍然存在,请使用上述artisan key generate命令生成的新密钥更新'key' => env('APP_KEY', 'SomeRandomString'),
:
'key' => env('APP_KEY', 'KEY_GENERATED_FROM_ABOVE_COMMAND'),
到
rfFuncs$SummaryFunction <- twoClassSummary ctrl_rfe <- rfeControl(method = "cv", number = 5, verbose = TRUE, functions = rfFuncs, allowParallel = F) rf_rfe <- rfe(select(trainData, -target), trainData$target, sizes = seq(1, ncol(trainData), 100), metric='ROC', rfeControl = ctrl_rfe)
答案 3 :(得分:22)
在public / index.php页面中试试这个
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set("display_errors", 1);
答案 4 :(得分:7)
对于任何获得空白页面的人,即使在显示错误的存储空间后,也可以将这两行放在public / index.php的第一行,看看至少发生了什么。对我来说,这个错误就在那里:在第16行的/var/www/***/config/database.php中找不到类'PDO'
error_reporting(E_ALL);
ini_set('display_errors', 1);
答案 5 :(得分:6)
当我刚接触Linux时。我经常在Laravel Project中发现这个错误。 白色错误表示错误,可能存在一些权限问题或错误。
你只需要遵循两个步骤,就像冠军一样工作:)
(1)给予许可。从项目的根目录运行这些命令
(a) sudo chmod 777 -R storage
(b) sudo chmod bootstrap/cache
(2)如果您克隆了项目或从github拉出,则运行
composer install
(3)正确配置.env文件,您的项目将有效。
答案 6 :(得分:4)
我在CentOS服务器上遇到类似的问题。使用php artisan serv并通过本地机器上的端口8000访问它工作正常但无法让我的远程机器加载特定视图。我可以很好地返回字符串,并且正在加载一些视图。在我终于意识到这是SELinux问题之前,在权限上追了我一会儿。我只是将它从强制设置为允许而且有效。希望能帮助那些可能遇到同样问题的其他人。
setenforce permissive
答案 7 :(得分:3)
我还有一个选择,为什么可能会出现空白页问题。如果您处于生产模式,并且通过php artisan(config:cache)缓存了配置文件,请尝试删除执行的缓存文件:
php artisan config:clear
或手动将其删除(bootstrap / cache / config.php)
答案 8 :(得分:2)
对于我来说,我已经安装了laravel
很多次,并且我确信已经正确地授予了文件夹写权限。
像上面的大多数答案一样:
sudo chmod 777 -R storage bootstrap
错误是我的nginx配置来自official documentation。
我仅在复制后修改了域名,然后出现空白页。
我尝试重新启动nginx
和php-fpm
,但对我不起作用。
最后,我添加了此线路配置来解决该问题。
location ~ \.php$ {
# same as documentation ...
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
希望我能帮助别人。
答案 9 :(得分:1)
有时它是因为laravel 5.1需要PHP&gt; = 5.5.9。更新php将解决问题。
答案 10 :(得分:1)
有时可能在route.php中
Route::get('/{id}', 'Controller@show'..
之前写过
Route::get('/add', 'Controller@add'..
当您从头开始开发控制器时,它可以是空方法Controller::show()
。在这种情况下,您将在请求/add
网址时获得空白页。发生这种情况是因为请求是通过/{id}
路由处理的,并且其方法未返回任何内容。
只需将/add
路线放在/{id}
之前
答案 11 :(得分:1)
它显示问题是.env文件的应用程序名称中的空格
答案 12 :(得分:1)
可能导致WSOD的另一件事是错过了&#39; return&#39;关键字,如:
return View::make('yourview');
而不是
View::make('yourview');
答案 13 :(得分:1)
对我来说很奇怪,但就我而言,我必须清除laravel的缓存以解决问题。
答案 14 :(得分:1)
我在Vagrant机器上设置它有一些问题。对我来说真正有用的是执行:
chmod -R o+w app/storage/
来自Vagrant机器内部。
答案 15 :(得分:1)
我做完composer update
我也尝试安装composer required monolog/monolog
,但是没有用。
然后,我删除了/ vendor目录并运行composer install
并按常规工作。
基本上,它必须已将我的独白和其他稳定软件包的版本还原到以前的版本。最好不要composer update
我注意到比较/ vendor文件夹,发现作曲家更新后classes
下的/vendor/monolog/monolog/src/Handler
个文件丢失了。
答案 16 :(得分:1)
确保您的 .env 文件中没有拼写错误。这就是我出现空白屏幕的原因。
屏幕、日志文件或 nginx 日志都没有记录任何内容。只是一个空白屏幕。
答案 17 :(得分:0)
空白屏幕问题很简单,就像环境文件中的错字或错误字符一样简单。 我正在实施社交名流,因此在为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'
希望这能帮助您找到一个愚蠢的错误...
答案 18 :(得分:0)
黑屏背后可能有很多原因而没有错误。 每当我想在共享托管中上传laravel项目时,我就多次遇到这个问题。
原因:错误的PHP版本
就我而言,问题是由于不正确的php版本引起的。我在本地计算机上有php 7.1版本,在共享主机面板中,有php 5.6版本。将版本从5.6切换到7.1对我来说很有效。
您可以通过cpanel主页上的multiphp管理器更改cpanel中的php版本。
答案 19 :(得分:0)
面对Laravel 5.8中的黑屏。赋予777权限的存储和引导文件夹都看起来不错。在
php artisan cache:clear
它显示出问题,原因是 .env 文件的应用名称中的空格
答案 20 :(得分:0)
使用此 .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>
答案 21 :(得分:0)
当我尝试在服务器上运行Laravel 5.8应用程序时遇到了这个问题,该应用程序是使用Vagrant Homestead从本地开发文件上传的。一段时间后,我发现正在运行的实时服务器上的dev子域以某种方式设置为PHP 5.6。
cPanel> MultiPHP Manager>设置为PHP 7.2
为我修复了此问题。希望这可以对某人有所帮助。
答案 22 :(得分:0)
从Laravel论坛得到这个,但如果您最近升级了Laravel版本和PHP版本并运行nginx,请确保您已更改nginx配置文件以反映新的PHP版本。例如:
在您的nginx网站配置文件中(此处:/ etc / nginx / sites-available),更改
% create slider
uicontrol('Parent',f,...
'Style','slider','Callback',{@sliderCallback,AX_main},...
'Units','normalized','Position',[0.05 0.05 0.9 0.05], ...
'HandleVisibility', 'off');
到
fastcgi_pass unix:/var/run/php5-fpm.sock;
答案 23 :(得分:0)
当您的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
是您的限制。
答案 24 :(得分:0)
运行此命令为我解决了此问题:
php artisan view:clear
我猜想一个空白的错误页面是如何被缓存的。不得不清除缓存。
答案 25 :(得分:0)
除了存储和缓存文件夹中的权限问题以及php版本问题外,还有其他原因可以显示空白页而不显示任何错误消息。
例如,我有一条 redeclare 错误消息,没有任何日志,白页为空白。 我自己的助手功能和供应商功能之间存在冲突。
我建议作为起点,运行artisan
命令。例如:
php artisan cache:clear
如果有问题,它将在终端中提示,并且您有线索,您可以在Google上找到解决方案。
答案 26 :(得分:0)
正常情况下,应记录错误除非
脚本无法写入日志文件
或者在Appache ||等更高级别的检查应用服务器日志上发生错误nginx的
或者是资源限制 像PHP ini设置一样
memory_limit
max_input_time
max_execution_time
或OS限制等等
答案 27 :(得分:0)
我有同样的问题。我已经为Storage文件夹更改了chmod文件夹。填写.env中的数据库设置,但没有解决问题。 我使用了Laravel 5.5并且使用了PHP 5.6来修复它,我去了(cpanel-&gt; PHP Selector)并且我改为PHP 7.1并且问题已经完成。
答案 28 :(得分:0)
当我第一次在laravel + Ubuntu 14.04上开始时,我也遇到了同样的错误 我只需右键单击bootstrap和存储文件夹&gt;&gt;&gt;属性&gt;&gt;&gt;权限&gt;&gt;其他访问&gt;&gt;&gt;将其更改为&#34;创建和删除文件&#34;更改附加文件的权限
谢谢
答案 29 :(得分:0)
如果您忘记将以下代码放在Middleware
函数
handle
return $next($request);
答案 30 :(得分:0)
具有相同行为的其他问题是使用Laravel 3和PHP 5.5.x.你必须改变一些laravel函数的名称“yield(),因为它是php 5.5中的保留字
答案 31 :(得分:-2)
此更改适用于我的localhost Ubuntu服务器14.xx设置
# Apply all permission to the laravel 5.x site folders
$ sudo chmod -R 777 mysite
还对网站上可用的httpd设置Apache2 settings
进行了更改添加设置:
Options +Indexes +FollowSymLinks +MultiViews
Require all granted
答案 32 :(得分:-2)
在我的情况下,重启apache修复了问题。 对于Ubuntu / Debian:
sudo service apache2 restart