Laravel 빈 흰색 화면


117

내 laravel 사이트는 이전에 작동했지만 최근에 Apache 2.4 및 PHP 5.5.7로 업그레이드했습니다.

이제 laravel.mydomain.com으로 이동할 때 흰색 빈 화면이 나타납니다. 아파치 오류 로그, 경로 등의 내용은 이전처럼 정상이어야합니다.

.htaccess가 /var/sites/laravel/public/.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

laravel.mydomain.com에 Laravel의 빈 새 설치를 넣으십시오. 그러면 작동합니까?
Laurence

HMM, 작곡가로 프로젝트를 만들려고했는데 openssl이없는 것 같습니다. 나중에 쉽게 추가 할 수있는 방법이 있습니까? 아니면 현재 구성 옵션 + --with-openssl로 PHP를 다시 컴파일해야합니까?
Mico

1
이미 작업중인 프로젝트를 스테이징 서버로 이동할 때이 빈 화면 문제가 발생했습니다. 나는 그것으로 아무것도 얻지 못하고 나는 @ the-shift-exchange의 제안과 똑같은 일을하고 Laravel의 새로운 설치를 만들기로 결정한 다음 문제를 꽤 빨리 발견했습니다. 스테이징 서버가 오래된 버전의 PHP를 실행 중이었습니다. Laravel은 최소한 PHP v5.4.0이 필요합니다. 다른 사람이 똑같은 문제를 겪을 경우를 대비해 언급 할 것이라고 생각했습니다.
igneosaur 2014 년

메모리 제한에 도달하지 않았는지 확인하십시오. 이로 인해 이전에 Laravel 4에서 WSOD가 발생했습니다
Smith

또 다른 데이터 포인트-NFS를 사용하여 웹 파일을 마운트하는 Kubernetes에 배포 된 앱에서이 문제를 해결했습니다. NFS 성능이 매우 느려 라 라벨이 적절한 시간 내에 뷰를 캐시하지 못하는 것 같습니다. PHP-FPM이 빈 응답을 반환했습니다. 모든보기를 수동으로 제거하고 다시 캐싱하여 수정했습니다.
Joe Niland 19

답변:


222

Apache

이 답변이 귀하의 상황을 설명하거나 도움 됩니까 ? Apache 2.4로 업그레이드하면 Apache 구성이 약간 변경됩니다.

라 라벨

Laravel의 로그 또는 Apache의 로그를 확인하고 있습니까?

Laravel 4.1로 업그레이드 한 이후로 애플리케이션이 로그 위치에 쓸 수 없을 때 흰색 화면 "오류"(WSOD)가 발생했습니다. 나는 항상 아파치 ( "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로 실행하지 않을 수 있습니다. 호스팅 및 설정에 따라 다릅니다!

라 라벨 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

Laravel 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

9
권한 문제인 것 같습니다. laravel 디렉토리를 chmoding하면 작동합니다.
Mico

3
@fideloper이 대답은 정말로 내 하루를 구했습니다. WSOD를 받고 있었고 로그에 아무것도 표시되지 않았습니다. 앱 / 스토리지를 chmodding하여 처리했습니다. 내 가상 모자를 당신에게 팁!
Tim Habersack

네, 여기에서 절 구 해주셔서 감사합니다. 나는 X-pad를 얻고 있었다 : 내 http 응답에서 브라우저 버그를 피하고
Simon Bennett

4
저장 폴더에 대한 권한으로 이러한 문제가 해결되었습니다. 하지만 laravel이 브라우저에서 권한 문제를 표시하지 않는 이유는 무엇입니까?
Musa 2014

4
이것은 나에게도 문제를 해결했습니다 .... 내 스스로 이것을 발견하지 못했을 것입니다. "죽음의 흰색 화면"이 아닌 일종의 오류 메시지가 표시되는 것이 가장 좋을 것이라는 데 동의합니다.
dusty909 2014-04-06

65

Laravel 5 및 새로운 파일 구조에 대한 fideloper의 답변에 대한 업데이트는 다음과 같습니다.

$ sudo chmod -R o+w storage/

명성! 우분투 14.04 서버에서 L5에 대한 문제를 해결했습니다.
Dylan Pierce

Mac OS X 10.10.3에서 저를 위해 일했습니다
dave

나를 위해 일했다 -에 CentOS 6.8 (최종)
마이크

26

public / index.php 페이지에서 시도해보십시오.

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

이것은 실제로 서버 작업의 어떤 이유로 (Plesk)에 오류 로그에 아무것도 기록하지 않고 laravel 로그에 아무것도 기록하지 않았기 때문에 실제로 필요한 것이 었습니다. 500 화면, 감사합니다!

나는 또한 흰색 화면이 있었고 전혀 오류가 없었습니다. 모든 허가와 모든 것이 완벽했습니다. 이 대답은 실제로 무슨 일이 일어나고 있는지 보는 데 도움이되었습니다. 감사.
SI

어제부터이 문제를 엉망으로 만들었습니다. 내 경우 폴더의 권한을 넘어서이 검사는 서버가 공급 업체 폴더 내의 모든 폴더를 추출하지 않았다고보고되었습니다!? 이 얼마나 미스터리 .... 정말 좋은 접근 방식입니다. 낮은 액세스 권한이없는 공용 서버에 유용합니다.
CodeToLife

26

다음 단계는 Laravel 5에서 빈 흰색 화면 문제를 해결했습니다.

  • Laravel 루트 폴더로 이동하십시오.
  • bootstrap/cachestorage디렉토리에 대한 쓰기 권한 부여

sudo chmod -R 777 부트 스트랩 / 캐시 저장소

  • 이름 바꾸기 .env.example.env
  • Laravel 루트의 터미널 / 명령 프롬프트에서 다음 명령으로 애플리케이션 키를 생성합니다.

PHP 장인 키 : 생성

그러면 암호화 키가 생성 APP_KEY되고 .env파일 의 값이 업데이트 됩니다.

이렇게하면 문제가 해결됩니다.

문제가 계속 config/app.php되면 위의 artisan key generate 명령에서 생성 된 새 키로 업데이트 하십시오.

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

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


10

오류를 표시하기 위해 저장소에 액세스 할 수 있도록 한 후에도 빈 페이지가 표시되는 사람은이 두 줄을 public / index.php의 첫 번째 줄에 넣어 적어도 무슨 일이 일어나고 있는지 확인하십시오. 나를 위해이 오류가있었습니다 : 16 줄의 /var/www/***/config/database.php에서 클래스 'PDO'를 찾을 수 없습니다.

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

6

Linux를 처음 사용했을 때 일반적으로 Laravel Project에서이 오류를 발견했습니다. 흰색 오류는 오류를 의미하며 일부 권한 문제 또는 오류가있을 수 있습니다.

두 단계 만 수행하면 챔피언처럼 작동합니다. :)

(1) 허가를주십시오. 프로젝트의 루트 디렉토리에서 다음 명령을 실행하십시오.

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

(2) 프로젝트를 복제했거나 github에서 가져온 경우 다음을 실행하십시오.

composer install

(3) .env 파일을 올바르게 구성하면 프로젝트가 작동합니다.


설치에서 (2) 단계가 누락되었습니다. 나는 그것이 상자에서 작동하는 데 필요한 모든 파일이 디렉토리에 있다고 생각하여 프로젝트를 복제했습니다. 여전히 문제가 있었지만 이것은 중요한 단계였습니다.
조나단 히크

5

CentOS 서버에서 비슷한 문제로 고생했습니다. php artisan serv를 사용하고 로컬 컴퓨터에서 포트 8000을 통해 액세스하면 제대로 작동했지만 원격 컴퓨터에서 특정보기를로드하지 못했습니다. 문자열을 잘 반환 할 수 있었고 일부 뷰가로드되었습니다. 마침내 SELinux 문제라는 것을 깨닫기 전에 잠시 동안 권한에 대한 꼬리를 쫓았습니다. 나는 그것을 강제에서 허용으로 설정하고 작동했습니다. 같은 문제가 발생할 수있는 다른 사람에게 도움이되기를 바랍니다.

setenforce permissive

이것은 매번 나를 도왔습니다
UMAIR 하미드에게

5

빈 페이지 문제가 발생하는 이유가 하나 더 있습니다. 프로덕션 모드에 있고 php artisan (config : cache)로 구성 파일을 캐시 한 경우 다음을 실행하는 캐시 파일을 삭제하십시오.

php artisan config:clear

또는 수동으로 삭제하십시오 (bootstrap / cache / config.php)


1
나는 다른 모든 것을 시도했고 이것이 나를 위해 일한 마지막 일입니다.
DavidHyogo

내 env 파일이 유효하지 않은 것으로 나타났습니다.이 명령을 실행하면 알려주십시오.
SvEnjoyPro

4

이 명령을 실행하면 해결되었습니다.

php artisan view:clear

빈 오류 페이지가 캐시 된 것 같습니다. 캐시를 지워야했습니다.


4

제 경우에는 laravel여러 번 설치 했으며 폴더 쓰기 권한이 올바르게 부여되었다고 확신합니다.

위의 대부분의 답변과 마찬가지로 :

sudo chmod 777 -R storage bootstrap

실수는 내 nginx 구성이 공식 문서 에서 나온 것입니다. 입니다.

복사 후 도메인 이름 만 수정했는데 빈 페이지가 생겼습니다. 내가 다시 시작하려 nginx하고php-fpm 나를 위해 일을하지만.

마지막으로 문제를 해결하기 위해이 라인 구성을 추가했습니다.

location ~ \.php$ {

    # same as documentation ...

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

다른 사람들을 도울 수 있기를 바랍니다.


1
이 문제로 하루 종일 쉬었습니다. 이것이 마침내 나를 구한 대답입니다. 나는 당신에게 찬성표 이상을 줄 수 있기를 바랍니다. 감사합니다!
Miles

3

Laravel 5.8에서 빈 화면을 마주하고 있습니다. 777 권한이 주어진 저장소 및 부트 스트랩 폴더 모두에서 모든 것이 잘 보입니다. 의 위에

php artisan cache:clear

그것은이 문제였다 쇼 화이트 공간 에서 .env의의 앱 이름 파일



1

WSOD를 유발할 수있는 또 다른 이유는 다음과 같이 'return'키워드가 누락 된 것입니다.

return View::make('yourview');

반대로

View::make('yourview');


1

때로는 laravel 5.1에 PHP> = 5.5.9가 필요하기 때문입니다. 업데이트 PHP는 문제를 해결합니다.



1

나는 또한 같은 문제에 직면했다. composer update

나는 설치를 시도했다 composer required monolog/monolog 작동하지 않았습니다.

그런 다음 / vendor 디렉토리를 제거하고 composer install정상적으로 실행 하고 작업했습니다.

기본적으로 내 모노로그 및 기타 안정적인 패키지 버전을 이전 버전으로 되돌 렸어 야합니다. 하지 않는 것이 낫다composer update

/ vendor 폴더를 모두 비교 한 결과 composer가 업데이트 된 후 해당 classes파일 /vendor/monolog/monolog/src/Handler이 누락 되었음을 알았습니다 .


1

오류없이 빈 화면 뒤에 많은 이유가있을 수 있습니다. 공유 호스팅에서 laravel 프로젝트를 업로드 할 때마다이 문제에 여러 번 직면했습니다.

이유 : 잘못된 PHP 버전

제 경우에는 잘못된 PHP 버전 때문이었습니다. 공유 호스팅 cpanel에서와 같이 php 5.6 버전이있는 로컬 컴퓨터에 php 7.1 버전이 있습니다. 버전을 5.6에서 7.1로 전환하는 것이 저에게 효과적이었습니다.

cpanel 홈페이지에있는 multiphp 관리자에서 cpanel의 PHP 버전을 변경할 수 있습니다.


1

때로는 route.php에서

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

전에 쓴

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

Controller::show()컨트롤러를 처음부터 개발하기 시작할 때 빈 메서드 일 수 있습니다 . 이 경우 /addURL을 요청할 때 빈 페이지가 표시됩니다 . 요청을 처리했기 때문에 발생합니다./{id} 경로 하며 해당 메서드는 아무것도 반환하지 않습니다.

/add전에 경로 를 배치하십시오./{id}


0

동일한 동작의 다른 문제는 PHP 5.5.x와 함께 Laravel 3을 사용하는 것입니다. laravel 함수의 이름 "yield ()는 PHP 5.5의 예약어이므로 변경해야합니다.



0

laravel + Ubuntu 14.04에서 처음 시작할 때도 동일한 오류가 발생했습니다. 부트 스트랩 및 저장 폴더 >>> 속성 >>> 권한 >> 기타 액세스 >>> "파일 만들기 및 삭제"로 변경합니다. 변경 동봉 된 파일에 대한 권한

감사합니다


0

Laravel 포럼에서 얻었지만 최근에 Laravel 버전과 PHP 버전을 업그레이드하고 nginx를 실행중인 경우 새 PHP 버전을 반영하도록 nginx 구성 파일을 변경했는지 확인하십시오. 예를 들면 :

nginx 사이트 구성 파일 (여기 : / etc / nginx / sites-available)에서

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

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


0

나는 같은 문제가 있습니다. 이미 스토리지 폴더의 chmod 폴더를 변경했습니다. .env에서 데이터베이스 설정을 채우지 만 문제를 해결하지 않았습니다. 나는 Laravel 5.5를 사용했고 PHP 5.6을 사용하여 그것을 고치기 위해 (cpanel-> PHP Selector) 가서 PHP 7.1로 변경했고 문제는 끝났습니다.


0

보통의 경우에 오류가 기록해야 하지 않는 한

스크립트는 로그 파일에 쓸 수 없습니다.

  • 경로 확인
  • 권한

또는 Appache와 같은 상위 레벨 확인 앱 서버 로그에서 오류가 발생했습니다 || Nginx

또는 PHP ini 설정과 같은 리소스 제한

memory_limit
max_input_time
max_execution_time

또는 OS 제한 등


0

저장소 및 캐시 폴더의 권한 문제 및 PHP 버전 문제 외에도 오류 메시지없이 빈 페이지를 표시하는 또 다른 이유가있을 수 있습니다.

예를 들어, 로그가없고 빈 흰색 페이지 가있는 오류 메시지를 다시 선언했습니다 . 내 도우미 기능과 공급 업체 기능간에 충돌이있었습니다.

시작점으로artisan 명령을 실행 하는 것이 좋습니다 . 예를 들면 :

php artisan cache:clear

문제가있는 경우 터미널에 메시지가 표시되고 Clue가 있으며 Google에서 해결책을 찾을 수 있습니다.


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하십시오.


0

Vagrant Homestead를 사용하여 로컬 개발에서 업로드하여 서버에서 Laravel 5.8 앱을 실행하려고 할 때이 문제가 발생했습니다. 잠시 후 내가 실행중인 라이브 서버의 dev 하위 도메인이 어떻게 든 PHP 5.6으로 설정되어 있다는 것을 알아 냈습니다.

cPanel> MultiPHP Manager> PHP 7.2로 설정

나를 위해 이것을 고쳤습니다. 이것이 누군가를 도울 수 있기를 바랍니다.


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>

0

제 경우에는 BLANK WHITE SCREEN 문제가 env 파일의 오타 나 잘못된 문자만큼 간단했습니다. 나는 사교계를 구현하고 있었기 때문에 다음과 같이 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'

바보 같은 오류를 찾는 데 도움이 되었기를 바랍니다.


-2

제 경우에는 아파치를 다시 시작하면 문제가 해결되었습니다. Ubuntu / Debian의 경우 :

sudo service apache2 restart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.