<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.commandline.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'features.commandline.webserver.php',
    1 => 'Yerleşik HTTP sunucusu',
    2 => 'Yerleşik HTTP sunucusu',
  ),
  'up' => 
  array (
    0 => 'features.commandline.php',
    1 => 'Komut satırından kullanım',
  ),
  'prev' => 
  array (
    0 => 'features.commandline.interactive.php',
    1 => 'Etkileşimli kabuk',
  ),
  'next' => 
  array (
    0 => 'features.commandline.ini.php',
    1 => 'INI Ayarları',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'features/commandline.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.commandline.webserver" class="section">
  <h2 class="title">Yerleşik HTTP sunucusu</h2>

  <div class="warning"><strong class="warning">Uyarı</strong>
   <p class="para">
    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.
   </p>
  </div>

  <p class="para">
   <abbr title="Command Line Interpreter/Interface">CLI</abbr> <abbr title="Server Application Programming Interface">SAPI</abbr> yerleşik bir HTTP sunucusu içerir.
  </p>

  <p class="para">
   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.
  </p>

  <p class="para">
   İstenen adres PHP&#039;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&#039;nin devamına $_SERVER[&#039;PATH_INFO&#039;] atanır. Aksi takdirde 404 yanıt kodu döndürülür.
  </p>

  <p class="para">
   İ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.
  </p>

  <p class="para">
    Aşağıdaki uzantılara sahip dosyalar için standart MIME türleri döndürülür:
   <span class="simplelist"><code class="literal">.3gp</code>, <code class="literal">.apk</code>, <code class="literal">.avi</code>, <code class="literal">.bmp</code>, <code class="literal">.css</code>, <code class="literal">.csv</code>, <code class="literal">.doc</code>, <code class="literal">.docx</code>, <code class="literal">.flac</code>, <code class="literal">.gif</code>, <code class="literal">.gz</code>, <code class="literal">.gzip</code>, <code class="literal">.htm</code>, <code class="literal">.html</code>, <code class="literal">.ics</code>, <code class="literal">.jpe</code>, <code class="literal">.jpeg</code>, <code class="literal">.jpg</code>, <code class="literal">.js</code>, <code class="literal">.kml</code>, <code class="literal">.kmz</code>, <code class="literal">.m4a</code>, <code class="literal">.mov</code>, <code class="literal">.mp3</code>, <code class="literal">.mp4</code>, <code class="literal">.mpeg</code>, <code class="literal">.mpg</code>, <code class="literal">.odp</code>, <code class="literal">.ods</code>, <code class="literal">.odt</code>, <code class="literal">.oga</code>, <code class="literal">.ogg</code>, <code class="literal">.ogv</code>, <code class="literal">.pdf</code>, <code class="literal">.png</code>, <code class="literal">.pps</code>, <code class="literal">.pptx</code>, <code class="literal">.qt</code>, <code class="literal">.svg</code>, <code class="literal">.swf</code>, <code class="literal">.tar</code>, <code class="literal">.text</code>, <code class="literal">.tif</code>, <code class="literal">.txt</code>, <code class="literal">.wav</code>, <code class="literal">.webm</code>, <code class="literal">.wmv</code>, <code class="literal">.xls</code>, <code class="literal">.xlsx</code>, <code class="literal">.xml</code>, <code class="literal">.xsl</code>, <code class="literal">.xsd</code>, <code class="literal">.zip</code></span>
  </p>
  <p class="simpara">
   PHP 7.4.0&#039;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
   <var class="envar">PHP_CLI_SERVER_WORKERS</var> ortam değişkeni istenen süreç
   sayısına ayarlanmalıdır.
  </p>
  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <span class="simpara">Bu özellik Windows&#039;ta desteklenmez.</span>
  </p></blockquote>
  <div class="warning"><strong class="warning">Uyarı</strong>
   <p class="para">
    Bu <em>deneysel</em> özellik üretim ortamında kullanmak için <em>tasarlanmamıştır</em>. Genelde yerleşik HTTP sunucuları üretim ortamında kullanmak için <em>tasarlanmaz</em>.
   </p>
  </div>

  <div class="example" id="example-1">
   <p><strong>Örnek 1 - HTTP sunucusunun başlatılması</strong></p>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ cd ~/public_html
$ php -S localhost:8000</pre>
</div>
   </div>

   <div class="example-contents"><p>
     Uçbirim çıktısı:
   </p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
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
</pre></div>
   </div>
   <div class="example-contents"><p>
     http://localhost:8000/ ve
     http://localhost:8000/myscript.html isteklerinden sonra uçbirim çıktısı
     şuna benzer:
   </p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
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
</pre></div>
   </div>
  </div>
   <p class="para">
    PHP 7.4.0&#039;dan önce, sembolik bağlantılı statik kaynaklara, yönlendirici
    betiği bunları işlemediği sürece Windows&#039;ta erişilemezdi.
   </p>
  <div class="example" id="example-2">
   <p><strong>Örnek 2 - Belge kök dizini belirterek başlatma</strong></p>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ cd ~/public_html
$ php -S localhost:8000 -t foo/</pre>
</div>
   </div>

   <div class="example-contents"><p>
     Uçbirim çıktısı:
   </p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
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
</pre></div>
   </div>
  </div>

  <div class="example" id="example-3">
   <p><strong>Örnek 3 - Yönlendirici betik belirtmek</strong></p>
   <div class="example-contents"><p>
    Görüntü isteklerinde görüntüler gösterildiği halde bir HTML dosyası
    istendiğinde &quot;Welcome to PHP&quot; göstermek:
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// router.php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/\.(?:png|jpg|jpeg|gif)$/'</span><span style="color: #007700">, </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">"REQUEST_URI"</span><span style="color: #007700">])) {<br />    return </span><span style="color: #0000BB">false</span><span style="color: #007700">;    </span><span style="color: #FF8000">// kaynak olduğu gibi gösterilir.<br /></span><span style="color: #007700">} else {<br />    echo </span><span style="color: #DD0000">"&lt;p&gt;Welcome to PHP&lt;/p&gt;"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ php -S localhost:8000 router.php</pre>
</div>
   </div>

  </div>

  <div class="example" id="example-4">
   <p><strong>Örnek 4 - CLI Sunucusunda kullanmadan önce betiği sınamak</strong></p>
   <div class="example-contents"><p>
    Bir yönlendirici betiği geliştirici CLI sunucusunda kullandıktan sonra asıl
    HTTP sunucusunda yeniden kullanmak:
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// router.php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">php_sapi_name</span><span style="color: #007700">() == </span><span style="color: #DD0000">'cli-server'</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">/* statik varlıkları yönlendir ve false ile dön */<br /></span><span style="color: #007700">}<br /></span><span style="color: #FF8000">/* normal index.php işlemleri ile devam et */<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ php -S localhost:8000 router.php</pre>
</div>
   </div>

  </div>

  <div class="example" id="example-5">
   <p><strong>Örnek 5 - Desteklenmeyen Dosya Türlerinin İşlenmesi</strong></p>
   <div class="example-contents"><p>
    MIME türleri CLI sunucusu tarafından işlenmeyen statik kaynakları
    sunmanız gerekirse:
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// router.php<br /></span><span style="color: #0000BB">$path </span><span style="color: #007700">= </span><span style="color: #0000BB">pathinfo</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">"SCRIPT_FILENAME"</span><span style="color: #007700">]);<br />if (</span><span style="color: #0000BB">$path</span><span style="color: #007700">[</span><span style="color: #DD0000">"extension"</span><span style="color: #007700">] == </span><span style="color: #DD0000">"el"</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Content-Type: text/x-script.elisp"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">readfile</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">"SCRIPT_FILENAME"</span><span style="color: #007700">]);<br />}<br />else {<br />    return </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ php -S localhost:8000 router.php</pre>
</div>
   </div>

  </div>

  <div class="example" id="example-6">
   <p><strong>Örnek 6 - CLI sunucusuna uzak makinelerden erişim</strong></p>
   <div class="example-contents"><p>
    HTTP sunucusuna port 8000&#039;den şöyle erişebilirsiniz:
   </p></div>
   <div class="example-contents">
<div class="shellcode"><pre class="shellcode">$ php -S 0.0.0.0:8000</pre>
</div>
   </div>

   <div class="warning"><strong class="warning">Uyarı</strong>
    <p class="para">
      Yerleşik HTTP sunucusu internette kullanılmamalıdır.
    </p>
   </div>
  </div>

 </div><?php manual_footer($setup); ?>