PHP 5.4.0'dan itibaren, CLI SAPI yerleşik bir HTTP sunucusu içermektedir.
Bu HTTP sunucusu sadece geliştirme amaçlı kullanıma uygun olarak tasarlanmıştır. Genel amaçlı bir HTTP sunucusu olarak kullanılmamalıdı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 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.
.css, .gif, .htm, .html, .jpe, .jpeg, .jpg, .js, .png, .svg ve .txt uzantılı dosyalar için standart MIME türleri döndürülür. .htm ve .svg uzantıları PHP 5.4.4'den beri tanınmaktadı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
Ö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"] == "ogg") {
header("Content-Type: video/ogg");
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