Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warnung
PHP unter Windows hat im November 2022 das Ende des Supports erreicht. PHP wird nur für App Service unter Linux unterstützt. Dieser Artikel dient nur zu Informationszwecken.
In diesem Leitfaden erfahren Sie, wie Sie Ihre PHP-Web-Apps, mobilen Back-Ends und API-Apps in Azure App Service konfigurieren. Die gängigsten Konfigurationsaufgaben werden behandelt.
Wenn Sie noch nicht mit App Service vertraut sind, sollten Sie zunächst die Schnellstartanleitung zum Erstellen einer PHP-Web-App in Azure App Service und das Tutorial Bereitstellen einer PHP-, MySQL- und Redis-App in Azure App Service befolgen.
PHP-Version anzeigen
Um die aktuelle PHP-Version anzuzeigen, führen Sie den folgenden Befehl aus. Sie können Azure Cloud Shell verwenden:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query phpVersion
Ersetzen Sie <resource-group-name>
und <app-name>
durch Namen, die für Ihre Web-App geeignet sind.
Hinweis
Um einen Entwicklungsslot zu adressieren, fügen Sie den Parameter --slot
gefolgt vom Namen des Slots ein.
Um alle unterstützten PHP-Versionen anzuzeigen, führen Sie den folgenden Befehl aus:
az webapp list-runtimes --os windows | grep PHP
In diesem Leitfaden erfahren Sie, wie Sie Ihre PHP-Web-Apps, mobilen Back-Ends und API-Apps in Azure App Service konfigurieren. Die gängigsten Konfigurationsaufgaben werden behandelt.
Wenn Sie noch nicht mit App Service vertraut sind, sollten Sie zunächst die Schnellstartanleitung zum Erstellen einer PHP-Web-App in Azure App Service und das Tutorial Bereitstellen einer PHP-, MySQL- und Redis-App in Azure App Service befolgen.
PHP-Version anzeigen
Um die aktuelle PHP-Version anzuzeigen, führen Sie den folgenden Befehl aus. Sie können Azure Cloud Shell verwenden.
az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion
Ersetzen Sie <resource-group-name>
und <app-name>
durch Namen, die für Ihre Web-App geeignet sind.
Hinweis
Um einen Entwicklungsslot zu adressieren, fügen Sie den Parameter --slot
gefolgt vom Namen des Slots ein.
Um alle unterstützten PHP-Versionen anzuzeigen, führen Sie den folgenden Befehl aus:
az webapp list-runtimes --os linux | grep PHP
PHP-Version festlegen
Um die PHP-Version auf 8.1 festzulegen, führen Sie den folgenden Befehl aus:
az webapp config set --resource-group <resource-group-name> --name <app-name> --php-version 8.1
Um die PHP-Version auf 8.1 festzulegen, führen Sie den folgenden Befehl aus:
az webapp config set --resource-group <resource-group-name> --name <app-name> --linux-fx-version "PHP|8.1"
Was geschieht mit veralteten Laufzeiten in App Service?
Veraltete Laufzeiten werden von der Aufrechterhaltungsorganisation nicht mehr unterstützt oder festgestellt, dass erhebliche Sicherheitsrisiken auftreten. Dementsprechend werden sie aus dem Erstellen und Konfigurieren von Seiten im Portal entfernt. Wenn eine veraltete Laufzeit im Portal ausgeblendet ist, wird jede App, die diese Laufzeit verwendet, weiterhin ausgeführt.
Wenn Sie eine App mit einer veralteten Laufzeitversion erstellen möchten, die nicht mehr im Portal angezeigt wird, verwenden Sie die Azure CLI-, ARM-Vorlage oder Bicep. Mit diesen Bereitstellungsalternativen können Sie veraltete Laufzeiten erstellen, die im Portal entfernt wurden, aber weiterhin unterstützt werden.
Wenn eine Laufzeit vollständig von der App Service-Plattform entfernt wird, erhält Ihr Azure-Abonnementbesitzer vor dem Entfernen eine E-Mail-Benachrichtigung.
Composer ausführen
Wenn Sie möchten, dass App Service Composer zum Zeitpunkt der Bereitstellung ausführt, ist es am einfachsten, Composer in Ihr Repository einzuschließen.
Öffnen Sie ein lokales Terminalfenster und wechseln Sie in das Stammverzeichnis Ihres Repositorys. Folgen Sie dann den Anweisungen unter Herunterladen von Composer, um composer.phar
in den Verzeichnisstamm herunterzuladen.
Führen Sie die folgenden Befehle aus. Um sie ausführen zu können, muss npm installiert sein.
npm install kuduscript -g
kuduscript --node --scriptType bash --suppressPrompt
Ihr Repository-Stammverzeichnis verfügt nun über zwei neue Dateien: .deployment
und deploy.sh
.
Öffnen Sie deploy.sh
und finden Sie den Abschnitt Deployment
, der wie dieses Beispiel aussieht.
##################################################################################################################################
# Deployment
# ----------
Fügen Sie am Ende des Deployment
Abschnitts den Codeabschnitt hinzu, den Sie zum Ausführen des erforderlichen Tools benötigen:
# 4. Use composer
echo "$DEPLOYMENT_TARGET"
if [ -e "$DEPLOYMENT_TARGET/composer.json" ]; then
echo "Found composer.json"
pushd "$DEPLOYMENT_TARGET"
php composer.phar install $COMPOSER_ARGS
exitWithMessageOnError "Composer install failed"
popd
fi
Schreiben Sie alle Ihre Änderungen fest, und stellen Sie Ihren Code mithilfe von Git oder ZIP-Deploy mit aktivierter Buildautomatisierung bereit. Composer sollte jetzt als Teil der Bereitstellungsautomatisierung ausgeführt werden.
Ausführen von Bower, Gulp oder Grunt
Wenn Sie möchten, dass App Service beliebte Automatisierungstools zum Zeitpunkt der Bereitstellung ausführt, z. B. Bower, Gulp oder Grunt, müssen Sie ein benutzerdefiniertes Bereitstellungsskript bereitstellen. App Service führt dieses Skript aus, wenn Sie die Bereitstellung mithilfe von Git oder ZIP Deploy mit aktivierter Buildautomatisierung durchführen.
Damit Ihr Repository diese Tools ausführen kann, müssen Sie sie den Abhängigkeiten in package.json
hinzufügen. Beispiel:
"dependencies": {
"bower": "^1.7.9",
"grunt": "^1.0.1",
"gulp": "^3.9.1",
...
}
Ändern Sie in einem lokalen Terminalfenster das Verzeichnis in Ihr Repository-Stammverzeichnis und führen Sie die folgenden Befehle aus. Um sie ausführen zu können, muss npm installiert sein.
npm install kuduscript -g
kuduscript --node --scriptType bash --suppressPrompt
Ihr Repository-Stammverzeichnis verfügt nun über zwei neue Dateien: .deployment
und deploy.sh
.
Öffnen Sie deploy.sh
und finden Sie den Abschnitt Deployment
, der wie dieses Beispiel aussieht.
##################################################################################################################################
# Deployment
# ----------
Dieser Abschnitt endet mit dem Ausführen von npm install --production
. Fügen Sie am Ende des Deployment
Abschnitts den Codeabschnitt hinzu, den Sie zum Ausführen des erforderlichen Tools benötigen:
Weitere Informationen finden Sie in einem Beispiel im der MEAN.js-Beispiel, in dem das Bereitstellungsskript auch einen benutzerdefinierten npm install
-Befehl ausführt.
Laube
Dieses Snippet lautet :bower install
if [ -e "$DEPLOYMENT_TARGET/bower.json" ]; then
cd "$DEPLOYMENT_TARGET"
eval ./node_modules/.bin/bower install
exitWithMessageOnError "bower failed"
cd - > /dev/null
fi
Schluck
Dieses Snippet lautet :gulp imagemin
if [ -e "$DEPLOYMENT_TARGET/gulpfile.js" ]; then
cd "$DEPLOYMENT_TARGET"
eval ./node_modules/.bin/gulp imagemin
exitWithMessageOnError "gulp failed"
cd - > /dev/null
fi
Grunzen
Dieses Snippet lautet :grunt
if [ -e "$DEPLOYMENT_TARGET/Gruntfile.js" ]; then
cd "$DEPLOYMENT_TARGET"
eval ./node_modules/.bin/grunt
exitWithMessageOnError "Grunt failed"
cd - > /dev/null
fi
Anpassen der Buildautomatisierung
Wenn Sie Ihre App mithilfe von Git oder ZIP-Paketen mit aktivierter Buildautomatisierung bereitstellen, durchläuft die Buildautomatisierung in App Service die folgende Reihenfolge:
- Führen Sie ein benutzerdefiniertes Skript aus, wenn
PRE_BUILD_SCRIPT_PATH
es angibt. - Führen Sie
php composer.phar install
aus. - Führen Sie ein benutzerdefiniertes Skript aus, wenn
POST_BUILD_SCRIPT_PATH
es angibt.
PRE_BUILD_COMMAND
und POST_BUILD_COMMAND
sind Umgebungsvariablen, die standardmäßig leer sind. Um vordefinierte Befehle auszuführen, definieren Sie PRE_BUILD_COMMAND
. Um Postbuildbefehle auszuführen, definieren Sie POST_BUILD_COMMAND
.
Im folgenden Beispiel werden die beiden Variablen für eine Reihe von Befehlen angegeben, die durch Kommas getrennt sind:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PRE_BUILD_COMMAND="echo foo, scripts/prebuild.sh"
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings POST_BUILD_COMMAND="echo foo, scripts/postbuild.sh"
Weitere Umgebungsvariablen zum Anpassen der Buildautomatisierung finden Sie unter Oryx-Konfiguration.
Informationen zum Ausführen und Erstellen von PHP-Apps unter Linux finden Sie in der Oryx-Dokumentation zum Erkennen und Erstellen von PHP-Apps.
Anpassen des Startvorgangs
Sie können einen benutzerdefinierten Befehl beim Start des Containers ausführen. Führen Sie den folgenden Befehl aus:
az webapp config set --resource-group <resource-group-name> --name <app-name> --startup-file "<custom-command>"
Zugreifen auf Umgebungsvariablen
In App Service können Sie App-Einstellungen außerhalb Ihres App-Codes festlegen. Sie können dann auf diese Einstellungen zugreifen, indem Sie das Standardmuster getenv()
verwenden. Verwenden Sie beispielsweise den folgenden Code, um auf eine App-Einstellung namens DB_HOST
zuzugreifen:
getenv("DB_HOST")
Stammverzeichnis der Site
Das Webframework Ihrer Wahl kann ein Unterverzeichnis als Site-Stammverzeichnis verwenden.
Laravel verwendet beispielsweise das public/
Unterverzeichnis als Site-Stammverzeichnis.
Um den Websitestamm anzupassen, legen Sie den virtuellen Anwendungspfad für die App mithilfe des az resource update
Befehls fest. Im folgenden Beispiel wird das Stammverzeichnis der Website auf das Unterverzeichnis public/
in Ihrem Repository festgelegt:
az resource update --name web --resource-group <group-name> --namespace Microsoft.Web --resource-type config --parent sites/<app-name> --set properties.virtualApplications[0].physicalPath="site\wwwroot\public" --api-version 2015-06-01
Standardmäßig verweist Azure App Service den Pfad der virtuellen Stammanwendung (/
) auf das Stammverzeichnis der bereitgestellten Anwendungsdateien (sites\wwwroot
).
Das Webframework Ihrer Wahl kann ein Unterverzeichnis als Site-Stammverzeichnis verwenden.
Laravel verwendet beispielsweise das public/
Unterverzeichnis als Site-Stammverzeichnis.
Das PHP-Standardimage für App Service verwendet NGINX, und Sie ändern den Stamm der Website, indem Sie den NGINX-Server mit der root
Anweisung konfigurieren. Diese Beispielkonfigurationsdatei enthält den folgenden Codeausschnitt, der die root
Direktive ändert:
server {
#proxy_cache cache;
#proxy_cache_valid 200 1s;
listen 8080;
listen [::]:8080;
root /home/site/wwwroot/public; # Changed for Laravel
location / {
index index.php index.html index.htm hostingstart.html;
try_files $uri $uri/ /index.php?$args; # Changed for Laravel
}
...
Der Standardcontainer verwendet die Konfigurationsdatei unter /etc/nginx/sites-available/default
. Alle Änderungen, die Sie an dieser Datei vornehmen, werden gelöscht, wenn die App neu gestartet wird. Um eine Änderung vorzunehmen, die bei allen App-Neustarts wirksam ist, fügen Sie einen benutzerdefinierten Startbefehl wie im folgenden Beispiel hinzu:
cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload
Mit diesem Befehl wird die standardmäßige NGINX-Konfigurationsdatei durch eine Datei ersetzt, die in Ihrem Repository-Stammverzeichnis benannt default
ist, und NGINX wird neu gestartet.
Erkennen einer HTTPS-Sitzung
In App Service erfolgt die TLS/SSL-Terminierung in den Modulen für den Netzwerklastenausgleich, sodass alle HTTPS-Anforderungen Ihre App als unverschlüsselte HTTP-Anforderungen erreichen. Wenn Ihre App-Logik überprüfen muss, ob die Benutzeranforderungen verschlüsselt sind, überprüfen Sie den X-Forwarded-Proto
Header:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
// Do something when HTTPS is used
}
Gängige Webframeworks ermöglichen den Zugriff auf die Information X-Forwarded-*
in Ihrem App-Standardmuster. In CodeIgniter überprüft die Funktion is_https() standardmäßig den Wert von X_FORWARDED_PROTO
.
Einstellungen von php.ini anpassen
Wenn Sie Änderungen an Ihrer PHP-Installation vornehmen müssen, können Sie eine der php.ini Direktiven ändern, indem Sie die folgenden Schritte ausführen.
Hinweis
Der beste Weg, um die PHP-Version und die aktuelle php.ini
Konfiguration zu sehen, besteht darin, phpinfo()
in Ihrer App aufzurufen.
Anpassen von Nicht-PHP_INI_SYSTEM-Anweisungen
Fügen Sie zum Anpassen der PHP_INI_USER
, PHP_INI_PERDIR
und PHP_INI_ALL
-Direktiven dem Stammverzeichnis Ihrer App eine .user.ini
-Datei hinzu.
Fügen Sie der .user.ini
Datei Konfigurationseinstellungen hinzu, indem Sie die gleiche Syntax verwenden, die Sie auch in einer php.ini
Datei verwenden würden. Wenn Sie z. B. die display_errors
Einstellung aktivieren und die upload_max_filesize
Einstellung auf 10M
festlegen möchten, enthält die .user.ini
-Datei diesen Text:
; Example Settings
display_errors=On
upload_max_filesize=10M
; Write errors to d:\home\LogFiles\php_errors.log
; log_errors=On
Stellen Sie Ihre App mit den Änderungen erneut bereit, und starten Sie sie neu.
Als Alternative zur Verwendung einer .user.ini
-Datei können Sie ini_set()
in Ihrer App verwenden, um diese nicht-PHP_INI_SYSTEM
-Befehle anzupassen.
Verwenden Sie zum Anpassen von PHP_INI_USER
, PHP_INI_PERDIR
und PHP_INI_ALL
-Direktiven für Linux-Web-Apps, wie upload_max_filesize
und expose_php
, eine benutzerdefinierte .ini-Datei. Sie können es in einer SSH-Sitzung erstellen. Richten Sie zunächst das Verzeichnis ein:
- Rufen Sie Ihre Kudu-Website auf. Um die zufälligen Hash- und Regionswerte abzurufen, kopieren Sie in der App-Übersichtdie Standarddomäne.
- Wählen Sie im oberen Menü Debugkonsole und dann Bash oder SSH aus.
- Wechseln Sie in Bash oder SSH zu Ihrem
/home/site/wwwroot
Verzeichnis. - Erstellen Sie ein Verzeichnis mit dem Namen
ini
(z. Bmkdir ini
. ). - Ändern Sie das aktuelle Arbeitsverzeichnis in den von Ihnen erstellten Ordner
ini
.
Erstellen Sie als Nächstes eine .ini Datei, in der Sie Ihre Einstellungen hinzufügen. In diesem Beispiel wird extensions.ini
verwendet. Es gibt keine Datei-Editoren wie Vi, Vim oder Nano. Verwenden Sie also Echo
, um die Einstellungen zur Datei hinzuzufügen. Ändern Sie den Wert von upload_max_filesize
von 2M
in 50M
. Verwenden Sie den folgenden Befehl, um die Einstellung hinzuzufügen und eine extensions.ini
Datei zu erstellen, falls noch keine vorhanden ist:
/home/site/wwwroot/ini>echo "upload_max_filesize=50M" >> extensions.ini
/home/site/wwwroot/ini>cat extensions.ini
upload_max_filesize=50M
/home/site/wwwroot/ini>
Fügen Sie im Azure-Portal eine Anwendungseinstellung hinzu, um das ini
soeben erstellte Verzeichnis zu überprüfen, um die Änderung für upload_max_filesize
zu übernehmen:
- Wechseln Sie zum Azure-Portal , und wählen Sie Ihre App Service Linux-PHP-Anwendung aus.
- Gehen Sie zu Einstellungen>Umgebungsvariablen.
- Klicken Sie auf + Hinzufügen.
- Geben Sie als NamePHP_INI_SCAN_DIR und als Wert den Wert ein
:/home/site/wwwroot/ini
. - Wählen Sie Anwenden und dann erneut Anwenden aus . Bestätigen Sie Ihre Änderungen.
Hinweis
Wenn Sie eine PHP-Erweiterung, wie z. B. GD, neu kompiliert haben, führen Sie die Schritte unter Neukompilieren von PHP-Erweiterungen aus.
PHP_INI_SYSTEM-Anweisungen anpassen
Um PHP_INI_SYSTEM
Direktiven anzupassen, verwenden Sie die PHP_INI_SCAN_DIR
App-Einstellung.
Führen Sie zunächst den folgenden Befehl aus, um eine App-Einstellung mit dem Namen PHP_INI_SCAN_DIR
hinzuzufügen:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PHP_INI_SCAN_DIR="d:\home\site\ini"
Wählen Sie im Azure-Portal Ihre App aus. Wählen Sie im Menü der Seitenleiste unter EntwicklungstoolsErweiterte Tools aus und wechseln Sie dann zu d:\home\site
mit SSH.
Erstellen Sie ein Verzeichnis in d:\home\site
namens ini
. Erstellen Sie dann eine .ini Datei in dem d:\home\site\ini
Verzeichnis, settings.ini
z. B. mit den Anweisungen, die Sie anpassen möchten. Verwenden Sie die gleiche Syntax, die Sie auch in einer php.ini
Datei verwenden würden.
Führen Sie beispielsweise die folgenden Befehle aus, um den Wert von expose_php
zu ändern:
cd /home/site
mkdir ini
echo "expose_php = Off" >> ini/setting.ini
Damit die Änderungen wirksam werden, starten Sie die App neu.
Um Direktiven anzupassen PHP_INI_SYSTEM
, können Sie den .htaccess-Ansatz nicht verwenden. App Service stellt einen separaten Mechanismus bereit, der die PHP_INI_SCAN_DIR
App-Einstellung verwendet.
Führen Sie zunächst den folgenden Befehl aus, um eine App-Einstellung mit dem Namen PHP_INI_SCAN_DIR
hinzuzufügen:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PHP_INI_SCAN_DIR="/usr/local/etc/php/conf.d:/home/site/ini"
Der Wert /usr/local/etc/php/conf.d
ist das Standardverzeichnis, in dem php.ini
existiert. Der Wert /home/site/ini
ist das benutzerdefinierte Verzeichnis, in dem Sie eine benutzerdefinierte .ini Datei hinzufügen. Sie trennen die Werte durch einen Doppelpunkt (:
).
Wechseln Sie zur Web-SSH-Sitzung mit Ihrem Linux-Container.
Erstellen Sie ein Verzeichnis in /home/site
namens ini
. Erstellen Sie dann eine .ini Datei in dem /home/site/ini
Verzeichnis, settings.ini
z. B. mit den Anweisungen, die Sie anpassen möchten. Verwenden Sie die gleiche Syntax, die Sie auch in einer php.ini
Datei verwenden würden.
Tipp
In den integrierten Linux-Containern in App Service wird /home
als persistenter freigegebener Speicher verwendet.
Führen Sie beispielsweise die folgenden Befehle aus, um den Wert von expose_php
zu ändern:
cd /home/site
mkdir ini
echo "expose_php = Off" >> ini/setting.ini
Damit die Änderungen wirksam werden, starten Sie die App neu.
PHP-Erweiterungen aktivieren
Die eingebauten PHP-Installationen enthalten die am häufigsten verwendeten Erweiterungen. Sie können weitere Erweiterungen auf die gleiche Weise aktivieren, wie Sie php.ini Direktiven anpassen.
Hinweis
Der beste Weg, um die PHP-Version und die aktuelle php.ini
Konfiguration zu sehen, besteht darin, phpinfo()
in Ihrer App aufzurufen.
Führen Sie die folgenden Schritte aus, um andere Erweiterungen zu aktivieren:
Fügen Sie dem Stammverzeichnis Ihrer App ein
bin
Verzeichnis hinzu, und fügen Sie die .dll Erweiterungsdateien darin ab,mongodb.dll
z. B. . . Stellen Sie sicher, dass die Erweiterungen mit der PHP-Version in Azure kompatibel sind und dass sie VC9- und Non-Thread-Safe (NTS)-kompatibel sind.Implementieren Sie Ihre Änderungen.
Befolgen Sie die Schritte in Anpassen von PHP_INI_SYSTEM-Anweisungen, und fügen Sie die Erweiterungen in der benutzerdefinierten INI-Datei mit den Anweisungen extension oder zend_extension hinzu:
extension=d:\home\site\wwwroot\bin\mongodb.dll zend_extension=d:\home\site\wwwroot\bin\xdebug.dll
Damit die Änderungen wirksam werden, starten Sie die App neu.
Die eingebauten PHP-Installationen enthalten die am häufigsten verwendeten Erweiterungen. Sie können weitere Erweiterungen auf die gleiche Weise aktivieren, wie Sie php.ini Direktiven anpassen.
Hinweis
Der beste Weg, um die PHP-Version und die aktuelle php.ini
Konfiguration zu sehen, besteht darin, phpinfo()
in Ihrer App aufzurufen.
Führen Sie die folgenden Schritte aus, um andere Erweiterungen zu aktivieren:
Fügen Sie dem Stammverzeichnis Ihrer App ein
bin
Verzeichnis hinzu, und fügen Sie die Dateien mit der Erweiterung .so darin ab (z. Bmongodb.so
. ). Stellen Sie sicher, dass die Erweiterungen mit der PHP-Version in Azure kompatibel sind und dass sie VC9- und Non-Thread-Safe (NTS)-kompatibel sind.Implementieren Sie Ihre Änderungen.
Befolgen Sie die Schritte in Anpassen von PHP_INI_SYSTEM-Anweisungen, und fügen Sie die Erweiterungen in der benutzerdefinierten INI-Datei mit den Anweisungen extension oder zend_extension hinzu:
extension=/home/site/wwwroot/bin/mongodb.so zend_extension=/home/site/wwwroot/bin/xdebug.so
Damit die Änderungen wirksam werden, starten Sie die App neu.
Zugreifen auf Diagnoseprotokolle
Verwenden Sie das Standardtool error_log()
, damit Ihre Diagnoseprotokolle in Azure App Service angezeigt werden.
Um auf die Konsolenprotokolle zuzugreifen, die aus Ihrem Anwendungscode in App Service generiert wurden, aktivieren Sie die Diagnoseprotokollierung, indem Sie den folgenden Befehl in Cloud Shell ausführen:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Mögliche Werte für --level
sind Error
, Warning
, Info
und Verbose
. Jede nachfolgende Ebene enthält die vorherige Ebene. Enthält z. B. Error
nur Fehlermeldungen.
Verbose
enthält alle Nachrichten.
Führen Sie nach dem Aktivieren der Diagnoseprotokollierung den folgenden Befehl aus, um den Protokolldatenstrom anzuzeigen:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Wenn Konsolenprotokolle nicht sofort angezeigt werden, überprüfen Sie es in 30 Sekunden erneut.
Wenn Sie das Protokollstreaming jederzeit beenden möchten, wählen Sie STRG+C aus.
Sie können auf die Konsolenprotokolle zugreifen, die aus dem Container generiert werden.
Führen Sie den folgenden Befehl aus, um die Containerprotokollierung zu aktivieren:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Ersetzen Sie <app-name>
und <resource-group-name>
durch Namen, die für Ihre Web-App geeignet sind.
Nachdem Sie die Containerprotokollierung aktiviert haben, führen Sie den folgenden Befehl aus, um den Protokolldatenstrom anzuzeigen:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Wenn Konsolenprotokolle nicht sofort angezeigt werden, überprüfen Sie es in 30 Sekunden erneut.
Wenn Sie das Protokollstreaming jederzeit beenden möchten, wählen Sie STRG+C aus.
Fehlersuche
Wenn sich eine funktionierende PHP-App in App Service anders verhält oder Fehler aufweist, versuchen Sie die folgenden Lösungen:
- Greifen Sie auf den Diagnoseprotokollstream zu.
- Testen Sie die App lokal im Produktionsmodus. App Service führt die App im Produktionsmodus aus, daher müssen Sie sicherstellen, dass das Projekt im lokalen Produktionsmodus wie erwartet funktioniert. Beispiel:
- Abhängig von Ihrer Datei
composer.json
können verschiedene Pakete für den Produktionsmodus installiert werden (require
oderrequire-dev
). - Bestimmte Webframeworks können statische Dateien im Produktionsmodus unterschiedlich bereitstellen.
- Bestimmte Webframeworks können benutzerdefinierte Startskripts verwenden, wenn sie im Produktionsmodus ausgeführt werden.
- Abhängig von Ihrer Datei
- Führen Sie Ihre App in App Service im Debugmodus aus. In Laravel können Sie Ihre App z. B. so konfigurieren, dass Debugmeldungen in der Produktion ausgegeben werden, indem Sie die
APP_DEBUG
App-Einstellung auftrue
festlegen.
Ignorieren Sie die Bots933456-Nachricht in Protokollen
Möglicherweise wird die folgende Meldung in den Containerprotokollen angezeigt:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Diese Meldung können Sie problemlos ignorieren.
/robots933456.txt
ist ein Dummy-URL-Pfad, den App Service verwendet, um zu überprüfen, ob der Container in der Lage ist, Anforderungen zu verarbeiten. Eine 404-Antwort gibt an, dass der Pfad nicht vorhanden ist, und signalisiert dem App-Dienst, dass der Container fehlerfrei ist und bereit ist, auf Anforderungen zu reagieren.