2016-11-25 7 views
1

У меня есть службы приложений на Microsoft Azure, которая использует Laravel 5.2 и PHP 7. Проблема, что у меня есть то, что иногда в то время как я просмотре сайта я получаю сообщение об ошибке:Laravel и Azure Ошибка: Внутренняя ошибка сервера

this page cannot be displayed because an internal server error has occurred

Это происходит случайным образом, но когда это происходит, он блокирует маршрут, например, я без проблем просматриваю адрес http://elsitio.com/details/12, после чего снова нажимаю кнопку, и это вызывает ошибку.

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

Помимо настройки Laravel .env Я не делал никаких конфигураций.

Использование phpinfo Я обнаружил, что сайт работает на FastCGI, но я не уверен в этом, так как показанная ошибка управляется IIS.

Мои вопросы:

  1. Any ideas on what may be causing the problem?

  2. How can I restart FastCGI/IIS service without restarting the App Service, for example in Apache over Linux would be service httpd restart .

UPDATE 1

Это очень странная ошибка, иногда я получаю ошибку, что некоторые Componentes пропали без вести: Interface 'Illuminate\Contracts\Queue\QueueableCollection' not found тогда я $: composer install и начинается для работы, затем перезагрузите страницу, и я получаю еще одну ошибку, связанную с отсутствующим компонентом.

Если изменить PHP версии он снова начинает работать :(.

+0

швы, которые вы установили в файле 'окр APP_DEBUG = false' и вы не можете увидеть фактическую ошибку. Также было бы неплохо добавить ваш '.env' в вопросе (без информации о подключении к базе данных) – Kliment

+0

APP_DEBUG имеет значение true :) – JohnnyAce

ответ

1

Обычно, когда вы получаете сообщение об ошибке 500 HTTP, то это означает, что вы может произойти неустранимая ошибка PHP. Вы можете включить конфигурацию ошибки отображения к диагнозу ошибки. в то же время, учитывая, что вы столкнулись случайно вопрос, вы можете также включить журнал ошибок, для отслеживания проблемы.

вы можете обратиться к Info About PHP Fatal Error and Error Log on Azure Website для получения дополнительной информации. Кроме того, вы можете обратиться к How to: Change the built-in PHP configurations.

Любые дальнейшие заботы, пожалуйста, не стесняйтесь, дайте мне знать.

+0

Это очень странная ошибка, иногда я получаю, что некоторые элементы Laravel отсутствуют: 'Интерфейс 'Illuminate \ Contracts \ Queue \ QueueableCollection' not found' then I do $: composer install, и он начинает работать, затем снова работает, затем я перезагружаю страницу, и я получаю еще одну ошибку. Если я изменю версию PHP, он снова начнет работать :( – JohnnyAce

1

У меня возникла проблема при переносе на Azure, что Composer не вытащил определенные файлы, когда я запустил composer install. Попробуйте загрузить файл вручную from here и запустите composer dump-autoload.

0

Если все сделано правильно, просто выполните следующее.

  1. Создайте web.conf под public.
  2. Скопируйте приведенный ниже код.

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