<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.exec.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.exec.php',
    1 => 'exec',
    2 => 'F&uuml;hrt ein externes Programm aus',
  ),
  'up' => 
  array (
    0 => 'ref.exec.php',
    1 => 'Funktionen zur Programmausf&uuml;hrung',
  ),
  'prev' => 
  array (
    0 => 'function.escapeshellcmd.php',
    1 => 'escapeshellcmd',
  ),
  'next' => 
  array (
    0 => 'function.passthru.php',
    1 => 'passthru',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/exec/functions/exec.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.exec" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">exec</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">exec</span> &mdash; <span class="dc-title">Führt ein externes Programm aus</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.exec-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>exec</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$command</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter reference">&$output</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter reference">&$result_code</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>exec()</strong></span> führt einen angegebenen Befehl
   (<code class="parameter">command</code>) aus.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.exec-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">command</code></dt>
     <dd>
      <p class="para">
       Der auszuführende Befehl
      </p>
     </dd>
    
    
     <dt><code class="parameter">output</code></dt>
     <dd>
      <p class="para">
       Ist der Parameter <code class="parameter">output</code> vorhanden, wird
       das angegebene Array mit jeder Zeile der Befehlsausgabe gefüllt. Am Ende
       einer jeweiligen Zeile stehende Whitespaces wie beispielsweise
       ein <code class="literal">\n</code> werden nicht in dieses Array übernommen.
       Beachten Sie, dass wenn das Array bereits Elemente enthält, die Funktion
       <span class="function"><strong>exec()</strong></span> die Ausgabe an das Array anhängt.  Wenn
       Sie dieses nicht wünschen, rufen Sie die Funktion <span class="function"><strong>unset
       ()</strong></span> für das Array auf, bevor Sie es als Parameter der
       Funktion <span class="function"><strong>exec()</strong></span> übergeben.
      </p>
     </dd>
    
    
     <dt><code class="parameter">result_code</code></dt>
     <dd>
      <p class="para">
       Ist der Parameter <code class="parameter">result_code</code> zusammen mit
       dem Parameter <code class="parameter">output</code> angegeben, so
       wird der Rückgabestatus des ausgeführten Befehls in diese
       Variable geschrieben.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.exec-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Die letzte Zeile der Ausgabe des Befehls. Wenn ein Befehl ausgeführt werden
   muss und alle Daten des Befehls direkt ohne Umweg über ein Array ausgegeben
   werden sollen, kann die Funktion <span class="function"><a href="function.passthru.php" class="function">passthru()</a></span> verwendet
   werden.
  </p>
  <p class="para">
   Gibt bei einem Fehler <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurück.
  </p>
  <p class="para">
   Um die Ausgabe des ausgeführten Befehls zu erhalten, muss sichergestellt
   werden, dass der Parameter <code class="parameter">output</code> gesetzt und
   verwendet wird.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.exec-errors">
  <h3 class="title">Fehler/Exceptions</h3>
  <p class="para">
   Wenn <span class="function"><strong>exec()</strong></span> den Befehl <code class="parameter">command</code>
   nicht ausführen kann, wird eine Meldung der Stufe
   <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> ausgegeben.
  </p>
  <p class="para">
   Löst einen <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> aus, wenn
   <code class="parameter">command</code> leer ist oder Nullbytes enthält.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.exec-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Beschreibung</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       Wenn <code class="parameter">command</code> leer ist oder Nullbytes enthält,
       löst <span class="function"><strong>exec()</strong></span> nun einen
       <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> aus. Zuvor gab die Funktion ein
       <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> aus und gab <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurück.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.exec-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Ein <span class="function"><strong>exec()</strong></span>-Beispiel</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Gibt den Benutzernamen aus, unter dem der PHP/HTTPD-Prozess läuft<br />// (auf einem System in dem das Programm "whoami" im Ausführungspfad liegt)<br /></span><span style="color: #0000BB">exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'whoami'</span><span style="color: #007700">, </span><span style="color: #0000BB">$output</span><span style="color: #007700">, </span><span style="color: #0000BB">$retval</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Rückgabe mit Status </span><span style="color: #0000BB">$retval</span><span style="color: #DD0000"> und Ausgabe:\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$output</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Rückgabe mit Status 0 und Ausgabe:
Array
(
    [0] =&gt; cmb
)</pre>
</div>
    </div>
   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.exec-notes">
  <h3 class="title">Anmerkungen</h3>
  <div class="warning"><strong class="warning">Warnung</strong><p class="para">Falls Sie es erlauben, dass Daten von
Usereingaben an diese Funktion weitergereicht werden, sollten Sie
<span class="function"><a href="function.escapeshellarg.php" class="function">escapeshellarg()</a></span> oder <span class="function"><a href="function.escapeshellcmd.php" class="function">escapeshellcmd()</a></span>
verwenden. Bei Verwendung dieser Funktionen stellen Sie sicher, dass kein
Benutzer Ihr System überlisten kann, beliebige Kommandos auszuführen</p></div>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: <p class="para">Wenn ein Programm mit dieser Funktion
gestartet wird und im Hintergrund weiterlaufen soll, muss die Ausgabe des Programms
in eine Datei oder einen anderen Ausgabestrom umgeleitet werden. Anderenfalls bleibt
PHP solange hängen, bis das Programm zu Ende ausgeführt wurde.</p></p></blockquote>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: <p class="para">Unter Windows startet <span class="function"><strong>exec()</strong></span> zunächst
cmd.exe um das Kommande auszuführen. Um ein externes Programm auszuführen ohne zuvor cmd.exe zu starten, sollte
<span class="function"><a href="function.proc-open.php" class="function">proc_open()</a></span> mit der Option <code class="parameter">bypass_shell</code> verwendet werden.</p></p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.exec-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.system.php" class="function" rel="rdfs-seeAlso">system()</a> - F&uuml;hrt ein externes Programm aus und zeigt dessen Ausgabe an</span></li>
    <li><span class="function"><a href="function.passthru.php" class="function" rel="rdfs-seeAlso">passthru()</a> - F&uuml;hrt ein externes Programm aus und zeigt dessen Ausgabe an</span></li>
    <li><span class="function"><a href="function.escapeshellcmd.php" class="function" rel="rdfs-seeAlso">escapeshellcmd()</a> - Maskiert Metazeichen der Shell</span></li>
    <li><span class="function"><a href="function.pcntl-exec.php" class="function" rel="rdfs-seeAlso">pcntl_exec()</a> - F&uuml;hrt ein angegebenes Programm im aktuellen Prozessraum aus</span></li>
    <li><a href="language.operators.execution.php" class="link">backtick operator</a></li>
   </ul>
  </p>
 </div>

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