Новая ошибка сервера Laravel 8 Install 500 без журналов Laravel или журналов Apache

Я рвал на себе волосы из-за этого несколько дней.

У меня есть веб-приложение Laravel, которое я пытаюсь развернуть на своем веб-сервере. Я начал делать приложение несколько недель назад и начал со свежей установки последней стабильной сборки Laravel.

Когда я впервые попытался установить Laravel через композитор, мне сказали, что моя версия PHP устарела. Мне нужна была 7.3 или выше, а у меня была установлена ​​7.2. Я пошел дальше и следовал этому руководству по установке php 7.4.

Сначала я получал ошибку 503 по умолчанию о недоступности службы в Apache, которую я смог связать с ошибкой ProxyPass на другом виртуальном хосте домена. Это отображалось в журналах ошибок Apache, когда я их проверял.

На данный момент я пошел дальше и просто отключил этот сайт, так как он все равно не использовался какое-то время.

После этого я теперь получаю стилизованный экран «500 | Ошибка сервера», который соответствует экранам кода ошибки Laravel по умолчанию. Однако, когда я иду проверять, у storage/logs/laravel.log нет новых ошибок. Если я попытаюсь запустить ремесленные команды как php artisan migrate, журнал правильно запишет вывод этих ошибок в файл. Так что это не ошибка разрешения, когда журнал вообще не может быть записан.

В настоящее время на моем веб-сервере установлено следующее.

  • Ларавель 8.12
  • PHP 7.4.13 (кли)
  • Апач 2.4.29

Пока что пробовал...

  • Файл .env успешно создан и имеет правильные разрешения. (оно делает)
  • Отладка включена (есть)
  • Как и в случае с другими установками Laravel на этом сервере , я убедился, что права доступа к файлам установлены правильно. (они есть)
  • Я проверил свой файл виртуального хоста (прикреплен ниже), и это копия одного из моих виртуальных хостов других сайтов Laravel с измененной соответствующей информацией. Другие мои сайты Laravel, размещенные на этом сервере (2 других проекта), работают нормально.
  • Я убедился, что все php-модули, необходимые для Laravel, установлены и обновлены. (они, насколько я могу судить)
  • Вручную установите отладку на true в config/app.php и перезагрузите кеш конфигурации с помощью php artisan config:cache

Файл виртуального хоста доменов:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName workworkwork.fitness
    ServerAlias workworkwork.fitness
    DocumentRoot /var/www/html/workout/public
    <Directory /var/www/html/workout/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =workworkwork.fitness
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Если у кого-то есть какие-либо идеи о том, как отладить эту ошибку, помощь будет принята с благодарностью. Как и в случае с развертыванием сайтов или настройкой новых доменов, я сталкивался с проблемами и раньше, но обычно Stack Overflow или другие сайты легко решаются Google. Тем не менее, я еще не нашел на этом сайте того, который мне подходит. И без отчетов об ошибках Apache или Laravel трудно даже понять, с чего начать.

Вообще говоря, для любой ошибки 500 должна быть запись в журнале. Попробуйте очистить storage/logs/laravel.log и обновить страницу, затем проверьте, есть ли запись в файле журнала. Также проверьте, есть ли какой-либо другой файл журнала, возможно, по дате в папке журналов. Если вы удалите последние три строки конфигурации виртуального хоста, то есть разрешите файлу .htaccess, который поставляется со стандартным приложением laravel, обрабатывать красивые URL-адреса, ошибка все еще сохраняется?

Donkarnash 21.12.2020 01:09

@Donkarnash Это был хороший момент, чтобы удалить условия перезаписи, я не очень привык писать виртуальный хост, поэтому, по общему признанию, это несколько собрано из большого количества чтения. Их удаление не меняет поведение. Все равно ошибка 500. Я очистил файл журнала. Ничего нового, чтобы сообщить. Если я ввожу ремесленную команду через терминал, который, как я знаю, выдаст ошибку, они все равно запишутся в файл. Так что я не могу понять, где они теряются.

Jem 21.12.2020 01:32

Убедитесь, что виртуальный хост правильно указан и работает нормально, установив phpinfo();exit; в начале ./public/index.php файла. Также это скажет вам, использует ли Apache PHP PHP 7.4.

Tpojka 21.12.2020 02:28
php artisan config:cache?
Ratto 21.12.2020 02:48

Временно определите новый маршрут «/» в одном из двух других проектов, успешно работающих на том же сервере, что и замыкание, и return phpinfo() из замыкания. Затем посетите маршрут «/» и посмотрите, какая версия php настроена для apache.

Donkarnash 21.12.2020 03:28

Если вы запустите php artisan без каких-либо команд, зарегистрирует ли он какую-либо ошибку в файле журнала? Или показать какую-либо ошибку в терминале?

Donkarnash 21.12.2020 03:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
6
9 567
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта проблема была решена некоторое время назад, и я не помню точных шагов (извините, я не забыл обновить это раньше), но у меня есть некоторые вещи для людей, которые могут наткнуться на это в будущем, чтобы проверить.

То, что я узнал, может помочь другим, если они столкнутся с похожей проблемой.

  • САМОЕ БОЛЬШОЕ ПРИМЕЧАНИЕ: Если на вашем сервере запущен Certbot или Let’s Encrypt. Проверьте их журналы ошибок. Он имеет свои собственные журналы, которые могут дать представление о том, как обрабатывается запрос. Обычно они находятся в /var/log/letsencrypt/. Я должен был упомянуть об этом в своих первых сообщениях. После того, как я сделал некоторые из других шагов ниже, чтобы устранить возможные проблемы, я обновил свои сертификаты и их перенаправления с HTTP на HTTPS, и это решило проблему. Я полагаю, что это было связано с тем, что RewriteRule ^ в одном домене был неправильно настроен из-за опечатки. В этом домене также был включен ProxyPass. Я думаю, между этой опечаткой и автоматически сгенерированными сертификатами от CerBot. Что-то где-то сломалось. Как только это было зафиксировано, исправлено и сертификаты были перевыпущены, проблема была решена.
  • Apache обрабатывает виртуальные хосты в алфавитном порядке. В моем случае домен, с которым возникла проблема, был самым низким в алфавитном порядке. В случае с моими журналами я заметил, что трафик, пытающийся достичь этого домена, направлялся через другой. Это побудило меня взглянуть на виртуальный хост для этого домена и на то, как он был настроен. Обратите внимание, что это не было указано как ошибка, оно действовало так, как будто это должно было быть сделано на основе некоторой конфигурации виртуального хоста. Не все ошибки являются ошибками в принципе. Что-то в этом позволяло Apache думать, что он работает правильно, в то время как Laravel отображал для себя ошибку состояния приложения как 500.
  • Отключены все виртуальные хосты, которые не используются или необходимы немедленно. В моем случае у меня было несколько старых виртуальных хостов, которые все еще работали для тестовых доменов, заброшенных сторонних проектов и т. д. Процесс устранения работает отлично. Медленно убирайте вещи, которые могут быть причиной проблемы, пока это не сработает, и тогда вы лучше поймете, что мешало этому. Естественно, вы захотите вернуть многих из них в онлайн, иначе не всегда будет возможность перевести что-то в автономный режим. Последнее средство для многих, но мне все же помогло.

Другие вопросы по теме