Moja witryna laravel działała wcześniej, niedawno zaktualizowałem do Apache 2.4 i PHP 5.5.7.
Teraz, kiedy przechodzę do laravel.mydomain.com, pojawia się biały, pusty ekran, nic w dziennikach błędów apache, trasach itp. Nie powinno być w porządku, tak jak działało wcześniej.
.htaccess ładuje się, ponieważ dostaję 500, kiedy wstawiam nieprawidłową linię do /var/sites/laravel/public/.htaccess.
Oto mój .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]
Oto moja dyrektywa Virtual Host:
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>
A 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
Odpowiedzi:
Apache
Czy ta odpowiedź opisuje lub pomaga w Twojej sytuacji? Aktualizacja do Apache 2.4 wiąże się z pewnymi zmianami w konfiguracji Apache.
Laravel
Czy sprawdzasz dzienniki Laravela lub dzienniki Apache?
Od czasu aktualizacji do Laravel 4.1, miałem "błędy" białego ekranu (WSOD), gdy aplikacja nie mogła zapisać w lokalizacji dziennika. Zawsze rozwiązywałem ten problem, udostępniając Apache'owi możliwość zapisu w katalogu aplikacji / pamięci (z możliwością zapisu przez grupę do „danych www”, „apache” lub z możliwością zapisu na całym świecie - to zależy od konfiguracji serwera).
Użytkownik serwera WWW
Na serwerach Ubuntu / Debian Twój PHP może działać jako „www-data” użytkownika. Na serwerach CentOS / RedHat / Fedora PHP może działać jako „apache” użytkownika.
Upewnij się, że Twoje pliki należą do użytkownika, który używa PHP:
Laravel 4
Laravel 5+ (w tym 6)
źródło
Aktualizacja odpowiedzi programu Fideloper dla Laravel 5 i jego nowej struktury plików to:
źródło
Spróbuj tego na stronie public / index.php
źródło
Poniższe kroki rozwiązały problem z pustym białym ekranem na moim Laravel 5.
bootstrap/cache
istorage
katalogom.env.example
na.env
Spowoduje to wygenerowanie klucza szyfrowania i zaktualizowanie wartości
APP_KEY
w.env
plikuTo powinno rozwiązać problem.
Jeśli problem nadal występuje, zaktualizuj
config/app.php
za pomocą nowego klucza wygenerowanego z powyższego polecenia generowania klucza rzemieślnika:źródło
dla każdego, kto otrzyma pustą stronę nawet po udostępnieniu pamięci masowej do wyświetlania błędów, umieść te dwie linie w pierwszych wierszach pliku public / index.php, aby przynajmniej zobaczyć, co się dzieje. dla mnie ten błąd tam był: Klasa 'PDO' nie została znaleziona w /var/www/***/config/database.php w linii 16
źródło
Kiedy byłem nowy w Linuksie, zwykle znajdowałem ten błąd w moim projekcie Laravel. Białe błędy oznaczają błąd, może mieć problem z pozwoleniem lub błąd.
Wystarczy wykonać dwa kroki i będzie działać jak mistrz :)
(1) Udziel pozwolenia. Uruchom te polecenie z katalogu głównego projektu
(2) Jeśli sklonowałeś projekt lub ściągnąłeś go z githuba, uruchom
(3) Skonfiguruj poprawnie plik .env, a projekt będzie działał.
źródło
Miałem podobny problem na serwerze CentOS. Używanie php artisan serv i uzyskiwanie do niego dostępu przez port 8000 na komputerze lokalnym działało dobrze, ale nie można było zmusić moich zdalnych maszyn do załadowania określonego widoku. Mogłem w porządku zwrócić ciągi i ładowały się niektóre widoki. Przez chwilę goniłem za swoimi uprawnieniami, zanim w końcu zdałem sobie sprawę, że to problem SELinux. Po prostu ustawiłem to z egzekwowania na liberalne i zadziałało. Mam nadzieję, że pomoże to komuś innemu, który może napotkać ten sam problem.
źródło
Mam jeszcze jedną opcję, dlaczego może wystąpić problem z pustą stroną. Jeśli jesteś w trybie produkcyjnym i buforowałeś swoje pliki konfiguracyjne przez php artisan (config: cache), spróbuj usunąć plik pamięci podręcznej wykonując:
lub usuń ręcznie (bootstrap / cache / config.php)
źródło
Uruchomienie tego polecenia rozwiązało to za mnie:
Wydaje mi się, że pusta strona błędu była w jakiś sposób buforowana. Musiałem wyczyścić pamięci podręczne.
źródło
W moim przypadku instalowałem
laravel
wiele razy i jestem pewien, że uprawnienia do zapisu folderu zostały udzielone poprawnie.Podobnie jak większość odpowiedzi powyżej:
Błąd polega na tym, że moja konfiguracja nginx pochodzi z oficjalnej dokumentacji .
Zmodyfikowałem nazwę domeny dopiero po skopiowaniu ,, po czym pojawiła się pusta strona. Próbowałem ponownie uruchomić
nginx
iphp-fpm
, ale nie działa dla mnie.Na koniec dodałem tę konfigurację linii, aby rozwiązać problem.
Mam nadzieję, że mogę pomóc innym.
źródło
W obliczu pustego ekranu w Laravel 5.8. Wydaje się, że wszystko jest w porządku zarówno z folderem przechowywania, jak i folderem bootstrap z 777 prawami. Na
Pokazuje problem, że były to białe spacje w nazwie aplikacji pliku .env
źródło
Mam pewne problemy z konfiguracją w maszynie Vagrant. To, co naprawdę działa dla mnie, to wykonanie:
chmod -R o+w app/storage/
z wnętrza maszyny Vagrant.
Źródła: https://laracasts.com/lessons/vagrant-and-laravel
źródło
Inną rzeczą, która może spowodować, że WSOD nie ma słowa kluczowego `` return '', na przykład:
return View::make('yourview');
w przeciwieństwie do
View::make('yourview');
źródło
Czasami dzieje się tak dlatego, że Laravel 5.1 wymaga PHP> = 5.5.9. Aktualizacja php rozwiąże problem.
źródło
Dziwne dla mnie, ale w moim przypadku musiałem wyczyścić pamięć podręczną laravela, aby rozwiązać problem.
źródło
Po wykonaniu tej czynności napotkałem ten sam problem
composer update
Próbowałem zainstalować
composer required monolog/monolog
też ale nie zadziałało.Następnie usunąłem katalog / vendor, uruchomiłem
composer install
i działałem normalnie.w zasadzie musiało przywrócić poprzednią wersję mojego monologu i innych stabilnych pakietów. więc lepiej tego nie robić
composer update
co zauważyłem porównując oba foldery / vendor i stwierdziłem, że te
classes
pliki/vendor/monolog/monolog/src/Handler
zniknęły po aktualizacji kompozytora.źródło
Pusty ekran bez błędów może mieć wiele przyczyn. Wielokrotnie napotykałem ten problem, gdy chcę przesłać projekt laravel na współdzielony hosting.
Przyczyna: nieprawidłowa wersja PHP
W moim przypadku problem wynikał z nieprawidłowej wersji php. Miałem wersję php 7.1 na lokalnym komputerze, gdzie podobnie jak w cpanelu hostingu współdzielonego była wersja php 5.6. Zmiana wersji z 5.6 na 7.1 działała dla mnie.
Możesz zmienić wersję php w cpanel z menedżera multiphp dostępnego na stronie głównej cpanel.
źródło
Czasami w route.php możesz mieć
napisane wcześniej
Może to być pusta metoda,
Controller::show()
gdy zaczynasz tworzyć kontroler od zera. W takim przypadku podczas żądania adresu/add
URL otrzymasz pustą, pustą stronę . Dzieje się tak, ponieważ żądanie zostało obsłużone przez/{id}
trasę, a jej metoda nic nie zwraca.Po prostu spróbuj
/add
wcześniej wytyczyć trasę/{id}
źródło
Innym problemem z tym samym zachowaniem jest użycie Laravel 3 z PHP 5.5.x. Musisz zmienić nazwę funkcji programu laravel „yield (), ponieważ jest to słowo zastrzeżone w php 5.5
źródło
Przyczyną może być
Middleware
to, że zapomnisz wstawić następujący kod na końcuhandle
funkcjiźródło
Pojawiał się również ten sam błąd, kiedy po raz pierwszy uruchamiam laravel + Ubuntu 14.04 Po prostu klikam prawym przyciskiem myszy na folder bootstrap i magazyn >>> właściwości >>> uprawnienia >> Inne dostęp >>> zmień to na "Tworzenie i usuwanie plików" Zmień zezwolenie na załączone pliki
Dziękuję Ci
źródło
Mam to z forów Laravel, ale jeśli niedawno zaktualizowałeś wersje Laravela ORAZ wersje PHP ORAZ korzystasz z nginx, upewnij się, że zmieniłeś plik konfiguracyjny nginx, aby odzwierciedlał nową wersję PHP. Na przykład:
W pliku konfiguracyjnym witryny nginx (tutaj: / etc / nginx / sites-available) zmień
fastcgi_pass unix:/var/run/php5-fpm.sock;
do
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
źródło
Mam ten sam problem. Już zmieniłem folder chmod na folder przechowywania. wypełnić ustawienia bazy danych w .env, ale nie rozwiązało problemu. Użyłem Laravela 5.5 i PHP 5.6, aby to naprawić, przeszedłem do (cpanel-> PHP Selector) i przeszedłem na PHP 7.1 I sprawa jest załatwiona.
źródło
W normalnych przypadkach błędy powinny być rejestrowane, chyba że
Skrypt nie może zapisać do pliku dziennika
Lub wystąpił błąd w dziennikach serwera aplikacji wyższego poziomu, takich jak Appache || Nginx
Lub to limity zasobów Jak ustawienia ini PHP
Lub limity systemu operacyjnego i tak dalej
źródło
Oprócz problemów z uprawnieniami w folderze przechowywania i pamięci podręcznej oraz problemów z wersją php, mogą istnieć inne powody wyświetlania pustej strony bez żadnego komunikatu o błędzie.
Na przykład otrzymałem komunikat o błędzie redeclare bez żadnego dziennika iz pustą białą stroną. Wystąpił konflikt między moją funkcją pomocniczą a funkcją sprzedawcy.
Proponuję jako punkt wyjścia uruchomić
artisan
polecenia. na przykład:Jeśli wystąpił problem, pojawi się monit w terminalu i masz wskazówkę i możesz wyszukać w Google rozwiązanie.
źródło
Pusty ekran występuje również, gdy aplikacja Laravel próbuje wyświetlić zbyt dużo informacji i pojawiają się limity PHP (na przykład wyświetlanie dziesiątek tysięcy rekordów bazy danych na jednej stronie). Najgorsze jest to, że w logach Laravela nie zobaczysz żadnych błędów. Prawdopodobnie nie zobaczysz również żadnych błędów w dziennikach PHP FPM. Możesz znaleźć błędy w dziennikach serwera http, na przykład nginx zgłasza coś takiego jak
FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of XXX bytes exhausted
.Krótka wskazówka: dodaj,
->limit(1000)
gdzie1000
jest twój limit, w obiekcie zapytania.źródło
Napotkałem ten problem, kiedy próbowałem uruchomić aplikację Laravel 5.8 na moim serwerze, przesyłając z lokalnego rozwoju za pomocą Vagrant Homestead. Po chwili zorientowałem się, że subdomena dev na serwerze live, na którym pracowałem, była w jakiś sposób ustawiona na PHP 5.6.
cPanel> MultiPHP Manager> Ustaw na PHP 7.2
naprawiłem to dla mnie. Mam nadzieję, że to może komuś pomóc.
źródło
użyj tego .htaccess do rozwiązania
źródło
w moim przypadku problem z PUSTYM BIAŁYM EKRANEM był tak prosty, jak literówka lub zły znak w pliku env. Wdrażałem Socialite, więc kiedy konfigurowałem dane logowania .env dla Google+ w następujący sposób:
Ale plik .env nie może używać znaku „+”, więc muszę wprowadzić tę korektę:
Mam nadzieję, że pomoże ci to znaleźć głupi błąd ...
źródło
W moim przypadku ponowne uruchomienie Apache rozwiązało problem. dla Ubuntu / Debian:
źródło