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.
   
   
  
   CLI SAPI 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.
  
  
    Aşağıdaki uzantılara sahip dosyalar için standart MIME türleri 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, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, .zip
  
  
   PHP 7.4.0'dan itibaren, yerleşik HTTP sunucusu, birden fazla eşzamanlı
   istek gerektiren kodu sınamak için birden fazla süreci çatallamak üzere
   yapılandırılabilir. Sunucu başlatılmadan önce
   PHP_CLI_SERVER_WORKERS ortam değişkeni istenen süreç
   sayısına ayarlanmalıdır.
  
  Bilginize: 
   Bu özellik Windows'ta desteklenmez.
  
  Uyarı
   
    Bu deneysel özellik üretim ortamında kullanmak için tasarlanmamıştır. Genelde yerleşik HTTP sunucuları üretim ortamında kullanmak için tasarlanmaz.
   
   
  
   Örnek 1 - HTTP sunucusunun başlatılması
   
$ cd ~/public_html
$ php -S localhost:8000
 
   
   
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/
 
   
   
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') {
    /* statik 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 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:
   
Uyarı
    
      Yerleşik HTTP sunucusu internette kullanılmamalıdır.