2016-11-25 2 views
1

Ich habe ein App-Dienst auf Microsoft Azure, die Laravel 5.2 und PHP 7. Das Problem verwendet, die ich habe, ist, dass manchmal, während ich die Seite bin gerade ich den Fehler:Laravel und Azure Fehler: Interner Serverfehler

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

Das geschieht zufällig, aber wenn es passiert, blockiert es die Route, zum Beispiel ich ohne Probleme die Adresse http://elsitio.com/details/12 browse dann klicke ich wieder und es wirft den Fehler.

Um den Fehler loszuwerden muss ich den App Service neu starten und es wird gut funktionieren, so denke ich, dass es etwas mit dem Views Cache in der App zu tun hat.

Abgesehen von der Laravel .env habe ich keine Konfigurationen vorgenommen.

Mit phpinfo habe ich festgestellt, dass die Site scheint auf FastCGI ausgeführt wird, aber ich bin mir nicht wirklich sicher, da der Fehler scheint von IIS verwaltet wird.

Meine Fragen sind:

  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

Es ist eine sehr seltsame Fehler, manchmal habe ich den Fehler, dass einige componentes fehlen: Interface 'Illuminate\Contracts\Queue\QueueableCollection' not found dann mache ich $: composer install und es beginnt zu arbeiten, dann lade ich die Seite neu und erhalte einen weiteren Fehler, der sich auf eine fehlende Komponente bezieht.

Wenn ich die PHP-Version ändern beginnt es wieder zu arbeiten :(.

+0

es Nähte, dass Sie in Ihrem env-Datei festgelegt haben 'APP_DEBUG = false' und Sie den tatsächlichen Fehler nicht sehen kann. Es wäre auch gut, dein '' hinzuzufügen.env' in der Frage (ohne Angaben zur Datenbankverbindung) – Kliment

+0

APP_DEBUG ist auf true gesetzt :) – JohnnyAce

Antwort

1

Normalerweise, wenn Sie einen 500 HTTP-Fehler erhalten, bedeutet dies, dass Sie einen PHP-fatalen Fehler auftreten können. Sie können die Anzeigefehler Konfiguration aktivieren Inzwischen, um die Fehlerdiagnose. Sie stehen vor einer zufällig Ausgabe unter Berücksichtigung, können Sie auch das Fehlerprotokoll aktivieren, zur Verfolgung der Frage.

Sie auf Info About PHP Fatal Error and Error Log on Azure Website für weitere Informationen verweisen. Sie können auch auf How to: Change the built-in PHP configurations verweisen.

Alle weiteren Bedenken, bitte zögern Sie nicht mich zu informieren.

+0

Es ist ein sehr seltsamer Fehler, manchmal bekomme ich, dass bestimmte Elemente von Laravel fehlen: 'Interface 'Illuminate \ Contracts \ Queue \ QueueableCollection' nicht gefunden, dann mache ich $: Composer installieren und es beginnt zu arbeiten, dann funktioniert es wieder, dann lade ich die Seite neu und ich bekomme einen weiteren Fehler. Wenn ich die PHP-Version ändere, fängt es wieder an zu arbeiten :( – JohnnyAce

1

Ich hatte ein Problem bei der Migration zu Azure, dass Composer bestimmte Dateien nicht abrufen würde, wenn ich composer install ausgeführt habe. Versuchen Sie, die Datei manuell herunterzuladen from here und führen Sie composer dump-autoload.

0

Wenn alles korrekt ausgeführt wird, tun Sie Folgendes.

  1. Erstellen Sie eine web.conf unter public.
  2. Kopieren Sie den folgenden Code.

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