Я рвал на себе волосы из-за этого несколько дней.
У меня есть веб-приложение Laravel, которое я пытаюсь развернуть на своем веб-сервере. Я начал делать приложение несколько недель назад и начал со свежей установки последней стабильной сборки Laravel.
Когда я впервые попытался установить Laravel через композитор, мне сказали, что моя версия PHP устарела. Мне нужна была 7.3 или выше, а у меня была установлена 7.2. Я пошел дальше и следовал этому руководству по установке php 7.4.
Сначала я получал ошибку 503 по умолчанию о недоступности службы в Apache, которую я смог связать с ошибкой ProxyPass на другом виртуальном хосте домена. Это отображалось в журналах ошибок Apache, когда я их проверял.
На данный момент я пошел дальше и просто отключил этот сайт, так как он все равно не использовался какое-то время.
После этого я теперь получаю стилизованный экран «500 | Ошибка сервера», который соответствует экранам кода ошибки Laravel по умолчанию. Однако, когда я иду проверять, у storage/logs/laravel.log
нет новых ошибок. Если я попытаюсь запустить ремесленные команды как php artisan migrate
, журнал правильно запишет вывод этих ошибок в файл. Так что это не ошибка разрешения, когда журнал вообще не может быть записан.
В настоящее время на моем веб-сервере установлено следующее.
Пока что пробовал...
.env
успешно создан и имеет правильные разрешения. (оно делает)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 трудно даже понять, с чего начать.
@Donkarnash Это был хороший момент, чтобы удалить условия перезаписи, я не очень привык писать виртуальный хост, поэтому, по общему признанию, это несколько собрано из большого количества чтения. Их удаление не меняет поведение. Все равно ошибка 500. Я очистил файл журнала. Ничего нового, чтобы сообщить. Если я ввожу ремесленную команду через терминал, который, как я знаю, выдаст ошибку, они все равно запишутся в файл. Так что я не могу понять, где они теряются.
Убедитесь, что виртуальный хост правильно указан и работает нормально, установив phpinfo();exit;
в начале ./public/index.php
файла. Также это скажет вам, использует ли Apache PHP PHP 7.4.
php artisan config:cache
?
Временно определите новый маршрут «/» в одном из двух других проектов, успешно работающих на том же сервере, что и замыкание, и return phpinfo()
из замыкания. Затем посетите маршрут «/» и посмотрите, какая версия php настроена для apache.
Если вы запустите php artisan
без каких-либо команд, зарегистрирует ли он какую-либо ошибку в файле журнала? Или показать какую-либо ошибку в терминале?
Эта проблема была решена некоторое время назад, и я не помню точных шагов (извините, я не забыл обновить это раньше), но у меня есть некоторые вещи для людей, которые могут наткнуться на это в будущем, чтобы проверить.
То, что я узнал, может помочь другим, если они столкнутся с похожей проблемой.
/var/log/letsencrypt/
. Я должен был упомянуть об этом в своих первых сообщениях. После того, как я сделал некоторые из других шагов ниже, чтобы устранить возможные проблемы, я обновил свои сертификаты и их перенаправления с HTTP на HTTPS, и это решило проблему. Я полагаю, что это было связано с тем, что RewriteRule ^
в одном домене был неправильно настроен из-за опечатки. В этом домене также был включен ProxyPass
. Я думаю, между этой опечаткой и автоматически сгенерированными сертификатами от CerBot. Что-то где-то сломалось. Как только это было зафиксировано, исправлено и сертификаты были перевыпущены, проблема была решена.
Вообще говоря, для любой ошибки 500 должна быть запись в журнале. Попробуйте очистить
storage/logs/laravel.log
и обновить страницу, затем проверьте, есть ли запись в файле журнала. Также проверьте, есть ли какой-либо другой файл журнала, возможно, по дате в папке журналов. Если вы удалите последние три строки конфигурации виртуального хоста, то есть разрешите файлу.htaccess
, который поставляется со стандартным приложением laravel, обрабатывать красивые URL-адреса, ошибка все еще сохраняется?