Yerleşik HTTP sunucusu

Uyarı

Bu HTTP sunucusu uygulama geliştirmeye yardımcı olmak üzere tasarlanmıştır. Ayrıca, denetimli bir ortam olarak uygulamaların denenmesi amacıyla da kullanılabilir. Herşeyiyle eksiksiz bir HTTP sunucusu olarak tasarlanmamıştır. Halka açık ağlarda kullanılmamalıdır.

CLISAPI yerleşik bir HTTP sunucusu içerir.

Bu HTTP sunucusu tek evreli bir süreç çalıştırır. Dolayısıyla, PHP uygulamaları istek engellendiği zaman yavaşlayıp duracaktır.

İstenen adres PHP'nin başlatıldığı çalışma dizinine göre sunulur. Bu kök dizin PHP çalıştırılırken -t seçeneği kullanılarak değiştirlebilir. İstek bir dosya belirtmiyorsa belirtilen dizindeki index.php veya index.html dosyası sunulur. Bu iki dosya da mevcut değilse index.php veya index.html araması üst dizinde devam eder ve bu belge kök dizinine ulaşılıncaya dek devam eder. Bulunduğu takdirde, döndürülür ve URI'nin devamına $_SERVER['PATH_INFO'] atanır. Aksi takdirde 404 yanıt kodu döndürülür.

İstenen adres bir dosya belirtmezse, belirtilen dizindeki index.php veya index.html gösterilir. Bu dosyalar da mevcut değilse, bir 404 yanıtı döndürülür.

.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, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd ve .zip uzantılı dosyalar için standart MIME türleri döndürülür.

Desteklenen MIME Türleri (dosya uzantıları) için değişiklik bilgisi
Sürüm: Açıklama
5.5.12 .xml, .xsl ve .xsd
5.5.7 .3gp, .apk, .avi, .bmp, .csv, .doc, .docx, .flac, .gz, .gzip, .ics, .kml, .kmz, .m4a, .mp3, .mp4, .mpg, .mpeg, .mov, .odp, .ods, .odt, .oga, .pdf, .pptx, .pps, .qt, .swf, .tar, .text, .tif, .wav, .wmv, .xls, .xlsx ve .zip
5.5.5 .pdf
5.4.11 .ogg, .ogv ve .webm
5.4.4 .htm ve .svg
Changelog
Sürüm: Açıklama
7.4.0 Yerleşik HTTP sunucusuna birden çok eşzamanlı istek gerektiren kodu sınamak için sunucuyu birden çok workers modülünü çatallayacak şekilde yapılandırabilirsiniz. Sunucuyu başlatmadan önce PHP_CLI_SERVER_WORKERS ortam değişkenini istenen workers modülü sayısına ayarlayın. Bu, Windows'ta desteklenmez.
Uyarı

Bu deneysel özellik, üretimde kullanım için tasarlanmamıştır. Genel olarak, yerleşik HTTP Sunucuları üretimde kullanım için tasarlanmamıştır.

Örnek 1 - HTTP sunucusunun başlatılması

$ cd ~/public_html $ php -S localhost:8000

Uçbirim çıktısı:

 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 

http://localhost:8000/ ve http://localhost:8000/myscript.html isteklerinden sonra uçbirim çıktısı şuna benzer:

 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 

PHP 7.4.0'dan önce, sembolik bağlantılı statik kaynaklara, yönlendirici betiği bunları işlemediği sürece Windows'ta erişilemezdi.

Örnek 2 - Belge kök dizini belirterek başlatma

$ cd ~/public_html $ php -S localhost:8000 -t foo/

Uçbirim çıktısı:

 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 

Örnek 3 - Yönlendirici betik belirtmek

Görüntü isteklerinde görüntüler gösterildiği halde bir HTML dosyası istendiğinde "Welcome to PHP" göstermek:

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return
false; // kaynak olduğu gibi gösterilir.
} else {
echo
"<p>Welcome to PHP</p>";
}
?>
$ php -S localhost:8000 router.php

Örnek 4 - CLI Sunucusunda kullanmadan önce betiği sınamak

Bir yönlendirici betiği geliştirici CLI sunucusunda kullandıktan sonra asıl HTTP sunucusunda yeniden kullanmak:

<?php
// router.php
if (php_sapi_name() == 'cli-server') {

}

?>
$ php -S localhost:8000 router.php

Örnek 5 - Desteklenmeyen Dosya Türlerinin İşlenmesi

MIME türleri CLI sunucusu tarafından işlenmeyen statik kaynakları sunmanız gerekirse:

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

Örnek 6 - CLI sunucusuna uzak makinelerden erişim

HTTP sunucusuna port 8000'den şöyle erişebilirsiniz:

$ php -S 0.0.0.0:8000
Uyarı

Yerleşik HTTP sunucusu internette kullanılmamalıdır.

To Top