<?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.usage.php',
    1 => 'Kullanım',
    2 => 'PHP dosyalarının &ccedil;alıştırılması',
  ),
  'up' => 
  array (
    0 => 'features.commandline.php',
    1 => 'Komut satırından kullanım',
  ),
  'prev' => 
  array (
    0 => 'features.commandline.options.php',
    1 => 'Se&ccedil;enekler',
  ),
  'next' => 
  array (
    0 => 'features.commandline.io-streams.php',
    1 => 'G/&Ccedil; Akımları',
  ),
  '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.usage" class="section">
  <h2 class="title">PHP dosyalarının çalıştırılması</h2>
  

 <p class="para">
  <abbr title="Command Line Interpreter/Interface">CLI</abbr> <abbr title="Server Application Programming Interface">SAPI</abbr> çalıştırmak istediğiniz PHP
  kodunu getirmek için üç farklı yola sahiptir:
  <ol type="1">
   <li class="listitem">
    <p class="para">
     PHP&#039;ye belli bir dosyayı çalıştırmasını söyleyerek.
    </p>
    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
php ornek_betik.php

php -f ornek_betik.php
</pre></div>
     </div>
    </div>
    <p class="para">
      Her iki yolla da (<strong class="option unknown">-f</strong> seçeneğini olsun olmasın)
      <var class="filename">ornek_betik.php</var> dosyası çalıştırılır. Çalıştırmak
      için herhangi bir dosyayı seçebilirsiniz - PHP betikleriniz
      <code class="literal">.php</code> uzantısı ile bitmek zorunda değildir,
      istediğiniz herhangi bir isim ve uzantıya sahip olabilirler.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Doğrudan komut satırında işletmek üzere PHP kodunu aktararak.
    </p>
    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
php -r &#039;print_r(get_defined_constants());&#039;
</pre></div>
     </div>
    </div>
    <p class="para">
     Kabuk değişken değişimi ve tırnak kullanımı için özel bir çaba
     sarfetmek gerekir.
    </p>
    <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
     <p class="para">
      Örneği dikkatle okuyunuz, hiçbir başlangıç veya bitiş etiketi yok!
      <strong class="option unknown">-r</strong> seçeneği bunlara ihtiyaç duymaz. Bunların
      kullanımı çözümleme hatasına yol açar.
      </p>
    </p></blockquote>
   </li>
   <li class="listitem">
    <p class="para">
     Çalıştırılacak PHP kodunu standart girdiden
      (<strong><code><a href="reserved.constants.php#constant.stdin">STDIN</a></code></strong>) yollamak suretiyle.
    </p>
    <p class="para">
     Bu, PHP kodunu dinamik olarak oluşturma ve bunu çalıştırma yeteneği
      sağlar. Örneğin:
    </p>
    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
$ bir_uygulama | bir_suzgec | php | sort -u &gt; nihai_sonuc.txt
</pre></div>
     </div>
    </div>
   </li>
  </ol>
  Kodu çalıştırmak için bu üç yol birlikte kullanılamaz.
 </p>
 <p class="para">
  Her kabuk uygulamasındaki gibi, PHP çalıştırılabiliri bir takım
  bağımsız değişkenler alabildiği gibi PHP betiğiniz de bağımsız değişkenler alabilir.
  Betiğinize aktarabileceğiniz bağımsız değişken sayısı PHP tarafından
  sınırlandırılmamıştır (kabukta aktarılabilecek karakter sayısı sınırlıdır;
  genellikle bu sınıra ulaşmazsınız). Betiğinize aktarılan bağımsız değişkenler
  <var class="varname"><a href="reserved.variables.argv.php" class="classname">$argv</a></var> küresel dizisinde bulunur. Sıfır indisi her zaman
  betik adını içerir. PHP kodu standart girdiden veya <strong class="option unknown">-r</strong>
  komut satırı seçeneğiyle çalıştıysa betik adı <code class="literal">&quot;Standard input
  code&quot;</code> olur; PHP 7.2.0 öncesinde <code class="literal">-</code> idi.
  Eğer kod standart girdiden bir boru ile çalıştırılırsa bu yine geçerlidir.
 </p>
 <p class="para">
  İkinci kayıtlı küresel değişken <var class="varname"><a href="reserved.variables.argc.php" class="classname">$argc</a></var>&#039;dir ve
  <var class="varname"><a href="reserved.variables.argv.php" class="classname">$argv</a></var> dizisindeki eleman sayısını içerir (betiğe
  aktarılan bağımsız değişken sayısını <strong>değil</strong>).
 </p>
 <p class="para">
  Betiğinize aktarmak istediğiniz bağımsız değişkenler <code class="literal">-</code>
  karakteriyle başlamadığı sürece, özel bir şeye dikkat etmeniz gerekmez.
  Betiğinize <code class="literal">-</code> ile başlayan bir bağımsız değişken aktarımı sorun
  yaratır çünkü PHP yorumlayıcısı bunu kendisinin işlemesi gerektiğini
  düşünecektir. Bunu önlemek için, bağımsız değişken listesi ayracı olan
  <code class="literal">--</code> kullanın, bunu izleyen her bağımsız değişken ellenmeden
  betiğinize aktarılır.
 </p>

 <div class="informalexample">
  <div class="example-contents screen">
<div class="cdata"><pre>
# Bu verilen kodu çalıştırmaz fakat PHP kullanımını gösterir
$ php -r &#039;var_dump($argv);&#039; -h
Usage: php [options] [-f] &lt;file&gt; [args...]
[...]

# Bu &#039;-h&#039; bağımsız değişkenini betiğinize aktarır ve
# PHP&#039;nin bağımsız değişkeni görmesini önler
$ php -r &#039;var_dump($argv);&#039; -- -h
array(2) {
  [0]=&gt;
  string(1) &quot;-&quot;
  [1]=&gt;
  string(2) &quot;-h&quot;
}
</pre></div>
  </div>
 </div>

 <p class="para">
  Kabuk betikleri için PHP farklı bir yoldan kullanılabilir. İlk satırı
  <code class="literal">#!/usr/bin/php</code> ile başlayan bir betik yazabilirsiniz.
  Bunu takip eden satırlara başlangıç ve bitiş etiketlerine sahip normal PHP
  kodunuzu yerleştirebilirsiniz. Dosyanın çalıştırma izinlerini
  ayarladığınızda (örn. <strong class="command">chmod +x deneme</strong>) betiğiniz normal
  bir kabuk veya perl betiği gibi işletilir.
 </p>
 <div class="example" id="example-1">
  <p><strong>Örnek 1 - PHP betiğini kabuk betiği olarak çalıştırmak</strong></p>
  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">#!/usr/bin/php<br /><span style="color: #0000BB">&lt;?php<br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$argv</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>

  <div class="example-contents"><p>
    Geçerli dizindeki bu dosyanın isminin <var class="filename">deneme</var>
    olduğunu varsayarsak, aşağıdakini yapabiliriz:
  </p></div>
  <div class="example-contents screen">
<div class="cdata"><pre>
$ chmod +x deneme
$ ./deneme -h -- foo
array(4) {
  [0]=&gt;
  string(6) &quot;./deneme&quot;
  [1]=&gt;
  string(2) &quot;-h&quot;
  [2]=&gt;
  string(2) &quot;--&quot;
  [3]=&gt;
  string(3) &quot;foo&quot;
}
</pre></div>
  </div>
 </div>
 <p class="para">
  Gördüğünüz gibi, bu durumda betiğinize <code class="literal">-</code> ile başlayan
  bağımsız değişken aktarırken hiçbir şeye dikkat etmeniz gerekmez.
 </p>

 <p class="para">
  PHP çalıştırılabiliri HTTP sunucusundan tamamen bağımsız olarak PHP
  betikleri çalıştırmak için kullanılabilir. Eğer Unix sistemi
  üzerindeyseniz, PHP betiğinizin başına özel bir <code class="literal">#!</code>
  satırı eklemeli ve  dosyanızı çalıştırılabilir yapmalısınız; böylece sistem
  betiğinizi hangi  programın çalıştıracağını bilir. Windows üzerinde
  <code class="literal">.php</code> dosyalarına çift tıklama seçeneği ile
  <var class="filename">php.exe</var>ilişkilendirebilir veya betiği PHP üzerinden
  çalıştıracak bir yığın dosyası yapabilirsiniz. Unix&#039;de çalışması için
  betiğe eklenen ilk satır Windows&#039;da sorun çıkarmaz, böylece platformdan
  bağımsız programlar yazabilirsiniz. Örnek basit bir komut satırı PHP
  programı aşağıdaki gibi olabilir.
 </p>
 <p class="para">
  <div class="example" id="example-2">
   <p><strong>Örnek 2 - Komut satırından çalıştırılması planlanan betik (betik.php)
   </strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">#!/usr/bin/php<br /><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">$argc </span><span style="color: #007700">!= </span><span style="color: #0000BB">2 </span><span style="color: #007700">|| </span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">], array(</span><span style="color: #DD0000">'--help'</span><span style="color: #007700">, </span><span style="color: #DD0000">'-help'</span><span style="color: #007700">, </span><span style="color: #DD0000">'-h'</span><span style="color: #007700">, </span><span style="color: #DD0000">'-?'</span><span style="color: #007700">))) {<br /></span><span style="color: #0000BB">?&gt;<br /></span>Bu tek seçenekli bir komut satırı PHP betiğidir.<br /><br />  Kullanımı:<br />  <span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]; </span><span style="color: #0000BB">?&gt;</span> &lt;secenek&gt;<br /><br />  &lt;secenek&gt; yazdırmak istediğiniz bir kelime olabilir.<br />  --help, -help, -h,<br />  veya -? seçenekleriyle, bu yardımı alabilirsiniz.<br /><br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">} else {<br />    echo </span><span style="color: #0000BB">$argv</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Yukarıdaki betikte, bu dosyanın PHP tarafından çalıştırılması gerektiğini
  belirten özel bir ilk satır kullandık. Burada <abbr title="Command Line Interpreter/Interface">CLI</abbr> sürümü ile çalışıyoruz,
  böylece HTTP başlık çıktıları olmayacak. PHP ile komut satırı uygulamaları
  yazarken kullanabileceğiniz iki değişken vardır: <var class="varname"><a href="reserved.variables.argc.php" class="classname">$argc</a></var>
  ve <var class="varname"><a href="reserved.variables.argv.php" class="classname">$argv</a></var>. Birincisi bağımsız değişken sayısından bir
  fazlasıdır (çalışan betiğin adı). İkincisi bağımsız değişkenleri içeren bir
  dizidir, sıfır numarayla başlar ve ilk elemanında betik adını içerir
  (<var class="varname"><a href="reserved.variables.argv.php" class="classname">$argv[0]</a></var>).
 </p>
 <p class="para">
  Yukarıdaki programda birden farklı sayıda bağımsız değişken olup olmadığı
  kontrol ettik. Ayrıca eğer bağımsız değişken <strong class="option unknown">--help</strong>,
  <strong class="option unknown">-help</strong>, <strong class="option unknown">-h</strong> veya <strong class="option unknown">-?</strong> ise
  yardım iletisini yazdırdık ve <var class="varname"><a href="reserved.variables.argv.php" class="classname">$argv[0]</a></var> ile betik adını
  dinamik olarak yazdırdık. Bunlardan başka bağımsız değişkenler aldıysak bunlar
  yerine onları yazdırdık.
 </p>
 <p class="para">
  Eğer yukarıdaki betiği Unix üzerinde çalıştırmak isterseniz betiği
  çalıştırılabilir yapmalı ve <strong class="command">betik.php echothis</strong> veya
  <strong class="command">betik.php -h</strong> ile çağırmalısınız. Windows&#039;da bu iş için
  bir yığın dosyası yapabilirsiniz:
 </p>
 <p class="para">
  <div class="example" id="example-3">
   <p><strong>Örnek 3 - Bir komut satırı PHP betiği çalıştırmak için yığın dosyası
   (betik.bat)</strong></p>
   <div class="example-contents">
<div class="winbatcode"><pre class="winbatcode">@echo OFF
&quot;C:\php\php.exe&quot; script.php %*</pre>
</div>
   </div>

  </div>
 </p>

 <p class="para">
  Yukarıdaki programı <var class="filename">betik.php</var> olarak adlandırdığınız
  ve <var class="filename">C:\php\php.exe</var> içinde <abbr title="Command Line Interpreter/Interface">CLI</abbr>&#039;nin
  <var class="filename">php.exe</var> olduğu varsayılarak bu yığın dosyası sizin
  eklediğiniz seçeneklerle çalışacaktır: <strong class="command">betik.bat
  echothis</strong> veya <strong class="command">betik.bat -h</strong>.
 </p>
 <p class="para">
   PHP&#039;deki komut satırı uygulamalarını iyileştirmek için kullanabileceğiniz
   işlevlerle ilgili bilgi için <a href="ref.readline.php" class="link">Readline</a> eklentisinin belgesine bakınız.
 </p>
 <p class="para">
  Windows üzerindeyseniz PHP,
  <a href="install.windows.commandline.php" class="link">Microsoft Windows
  üzerinde PHP Komut Satırı</a>
  bölümünde açıklandığı gibi <code class="literal">.php</code> uzantısına veya
  <var class="filename">C:\php\php.exe</var> çalıştırılabilirinin belirtilmesine
  gerek kalmadan çalıştırılmak üzere yapılandırılabilir.
 </p>

  <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
   <p class="para">
    Windows&#039;ta PHP&#039;yi gerçek bir kullanıcı hesabı altında çalıştırmanız
    önerilir. Aksi takdirde, bir ağ hizmeti altında çalışırken, &quot;Hesap
    adları ile güvenlik kimlikleri arasında hiçbir eşleştirme yapılmadığı&quot;
    için belirli işlemler başarısız olur.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>