У меня есть служба приложений в Microsoft Azure, которая использует Laravel 5.2 и PHP 7. У меня проблема в том, что иногда, когда я просматриваю сайт, я получаю сообщение об ошибке:
эта страница не может быть отображена, потому что произошла внутренняя ошибка сервера
Это происходит случайным образом, но когда это происходит, он блокирует маршрут, например, я без проблем просматриваю адрес http://elsitio.com/details/12 затем я нажимаю снова, и он выдает ошибку.
Чтобы избавиться от ошибки, мне нужно перезапустить службу приложений, и она будет работать нормально, поэтому я думаю, что это как-то связано с кэшем представлений в приложении.
Помимо установки Laravel .env
Я не делал никаких настроек.
Используя phpinfo, я обнаружил, что сайт, кажется, работает на FastCGI, но я не совсем уверен в этом, поскольку показанная ошибка, кажется, управляется IIS.
Мои вопросы:
Любые идеи о том, что может быть причиной проблемы?
Как перезапустить службу FastCGI / IIS без перезапуска службы приложений, например, в Apache через Linux будет
service httpd
,
restart
ОБНОВЛЕНИЕ 1
Это очень странная ошибка, иногда я получаю сообщение об ошибке, что некоторые компоненты отсутствуют: Interface 'Illuminate\Contracts\Queue\QueueableCollection' not found
тогда я делаю $: composer install
и он начинает работать, затем я перезагружаю страницу и получаю еще одну ошибку, связанную с отсутствующим компонентом.
Если я меняю версию PHP, она снова начинает работать :(.
Обычно, когда вы получаете ошибку 500 http, это означает, что у вас может возникнуть фатальная ошибка php. Вы можете включить конфигурацию ошибок дисплея для диагностики ошибки. Между тем, учитывая, что вы столкнулись со случайной проблемой, вы также можете включить журнал ошибок для отслеживания проблемы.
Вы можете обратиться к Сведения о фатальной ошибке PHP и журнале ошибок на веб-сайте Azure для получения дополнительной информации. Также вы можете обратиться к Как: изменить встроенные конфигурации PHP.
Любое дальнейшее беспокойство, пожалуйста, не стесняйтесь, дайте мне знать.
При переходе на Azure у меня возникла проблема, из-за которой Composer не получал определенные файлы при запуске composer install
, Попробуйте загрузить файл вручную отсюда и беги composer dump-autoload
,
Если все сделано правильно, просто сделайте следующее.
web.conf
под public
,Скопируйте код ниже.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)/$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="/{R:1}" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>