Inbyggd webbserver
Inbyggd webbserver
Varning
Denna webbserver är avsedd att underlätta applikationsutveckling. Den kan också vara användbar för teständamål eller för applikationsdemonstrationer som körs i kontrollerade miljöer. Den är inte avsedd att vara en fullfjädrad webbserver. Den bör inte användas på ett offentligt nätverk.
CLI SAPI tillhandahåller en inbyggd webbserver.
Webbservern kör endast en enkeltrådad process, så PHP-applikationer kommer att stanna om en begäran blockeras.
URI-förfrågningar serveras från den aktuella arbetskatalogen där PHP startades, om inte alternativet `-t` används för att specificera en explicit dokumentrot. Om en URI-förfrågan inte specificerar en fil, returneras antingen `index.php` eller `index.html` i den angivna katalogen. Om ingen av filerna existerar, fortsätter sökningen efter `index.php` och `index.html` i föräldrakatalogen och så vidare tills en hittas eller dokumentroten har nåtts. Om en `index.php` eller `index.html` hittas returneras den och `$_SERVER['PATH_INFO']` sätts till den efterföljande delen av URI:n. Annars returneras en 404-responskod.
Om en PHP-fil anges på kommandoraden när webbservern startas behandlas den som ett "router"-skript. Skriptet körs vid starten av varje HTTP-förfrågan. Om detta skript returnerar `false`, returneras den begärda resursen som den är. Annars returneras skriptets utdata till webbläsaren.
Standard MIME-typer returneras för filer med följande tillägg: `.3gp`, `.apk`, `.avi`, `.bmp`, `.css`, `.csv`, `.doc`, `.docx`, `.flac`, `.gif`, `.gz`, `.gzip`, `.htm`, `.html`, `.ics`, `.jpe`, `.jpeg`, `.jpg`, `.js`, `.kml`, `.kmz`, `.m4a`, `.mov`, `.mp3`, `.mp4`, `.mpeg`, `.mpg`, `.odp`, `.ods`, `.odt`, `.oga`, `.ogg`, `.ogv`, `.pdf`, `.png`, `.pps`, `.pptx`, `.qt`, `.svg`, `.swf`, `.tar`, `.text`, `.tif`, `.txt`, `.wav`, `.webm`, `.wmv`, `.xls`, `.xlsx`, `.xml`, `.xsl`, `.xsd`, `.zip`.
Från och med PHP 7.4.0 kan den inbyggda webbservern konfigureras för att förgrena flera arbetare för att testa kod som kräver flera samtidiga förfrågningar till den inbyggda webbservern. Ställ in miljövariabeln `PHP_CLI_SERVER_WORKERS` till önskat antal arbetare innan du startar servern.
Notera: Denna funktion stöds inte på Windows.
Varning
Denna experimentella funktion är inte avsedd för produktionsanvändning. Generellt sett är den inbyggda webbservern inte avsedd för produktionsanvändning.
Exempel #1 Starta webbservern
$ cd ~/public_html $ php -S localhost:8000
Terminalen kommer att visa:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit
Efter URI-förfrågningar till `http://localhost:8000/` och `http://localhost:8000/myscript.html` kommer terminalen att visa något liknande:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read
Observera att före PHP 7.4.0 har symlänkade statiska resurser inte varit tillgängliga på Windows, om inte router-skriptet hanterar dessa.
Exempel #2 Starta med en specifik dokumentrotkatalog
$ cd ~/public_html $ php -S localhost:8000 -t foo/
Terminalen kommer att visa:
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011 Listening on localhost:8000 Document root is /home/me/public_html/foo Press Ctrl-C to quit
Exempel #3 Använda ett router-skript
I detta exempel kommer förfrågningar efter bilder att visa dem, men förfrågningar efter HTML-filer kommer att visa "Welcome to PHP":
<?php // router.php if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) { return false; // servera den begärda resursen som den är. } else { echo "<p>Welcome to PHP</p>"; } ?>
$ php -S localhost:8000 router.php
Exempel #4 Kontrollera användning av CLI-webbserver
För att återanvända ett ramverks router-skript under utveckling med CLI-webbservern och senare även med en produktionswebbserver:
<?php // router.php if (php_sapi_name() == 'cli-server') { /* routa statiska resurser och returnera false */ } /* fortsätt med normala index.php-operationer */ ?>
$ php -S localhost:8000 router.php
Exempel #5 Hantera icke-stödda filtyper
Om du behöver servera en statisk resurs vars MIME-typ inte hanteras av CLI-webbservern, använd:
<?php // router.php $path = pathinfo($_SERVER["SCRIPT_FILENAME"]); if ($path["extension"] == "el") { header("Content-Type: text/x-script.elisp"); readfile($_SERVER["SCRIPT_FILENAME"]); } else { return FALSE; } ?>
$ php -S localhost:8000 router.php
Exempel #6 Åtkomst till CLI-webbservern från fjärrmaskiner
Du kan göra webbservern tillgänglig på port 8000 för alla gränssnitt med:
$ php -S 0.0.0.0:8000
Varning
Den inbyggda webbservern bör inte användas på ett offentligt nätverk.
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.commandline.webserver.php
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp.se som har sponsrat Linux.se med webserver.