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.
PHP 5.4.0'dan itibaren, CLI SAPI yerleşik bir HTTP sunucusu içermektedir.
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.
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 | |
5.4.11 | .ogg, .ogv ve .webm |
5.4.4 | .htm ve .svg |
Ö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
Ö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
Resim isteklerinde resimler 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 Checking for CLI Web Server Use
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') {
/* duruk varlıkları yönlendir ve false ile dön */
}
/* normal index.php işlemleri ile devam et */
?>
$ php -S localhost:8000 router.php
Örnek 5 Desteklenmeyen Dosya Türlerinin İşlenmesi
MIME türleri CLI sunucusu tarafından işlenmeyen duruk 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