<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration71.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'migration71.windows-support.php',
    1 => 'Windows-Unterst&uuml;tzung',
    2 => 'Windows-Unterst&uuml;tzung',
  ),
  'up' => 
  array (
    0 => 'migration71.php',
    1 => 'Migration von PHP 7.0.x nach PHP 7.1.x',
  ),
  'prev' => 
  array (
    0 => 'migration71.other-changes.php',
    1 => 'Sonstige &Auml;nderungen',
  ),
  'next' => 
  array (
    0 => 'migration70.php',
    1 => 'Migration von PHP 5.6.x nach PHP 7.0.x',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'appendices/migration71/windows-support.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration71.windows-support" class="sect1">
 <h2 class="title">Windows-Unterstützung</h2>

 <div class="sect2" id="migration71.windows-support.long-and-utf8-path">
  <h3 class="title">Unterstützung für lange Pfade und UTF-8-Pfade</h3>
  <p class="para">
   Wenn eine Webanwendung UTF-8-konform ist, sind keine weiteren Maßnahmen
   erforderlich. Für Anwendungen, die auf Pfade angewiesen sind, die nicht
   UTF-8-kodiert sind, muss eine explizite INI-Direktive gesetzt werden. Die
   Prüfung der INI-Einstellungen für die Kodierung hängt von der Reihenfolge
   im Kern ab:
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     internal_encoding
    </span>
   </li>
    <li class="listitem">
    <span class="simpara">
     default_charset
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     zend.multibyte
    </span>
   </li>
  </ul>
  <p class="para">
   Es wurden mehrere Funktionen zur Handhabung von Codepages eingeführt:
  </p>
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      sapi_windows_cp_set(), um die Standard-Codepage festzulegen
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      sapi_windows_cp_get(), um die aktuelle Codepage abzurufen
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      sapi_windows_cp_is_utf8()
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      sapi_windows_cp_conv(), um unter Verwendung einer mit iconv()
      kompatiblen Signatur zwischen Codepages zu konvertieren
     </span>
    </li>
   </ul>
  <p class="para">
   Diese Funktionen sind threadsicher.
  </p>
  <p class="para">
   Die Codepage für die Konsolenausgabe wird abhängig von der intern in PHP
   verwendeten Kodierung festgelegt. Je nach konkreter OEM-Codepage des
   Systems kann die sichtbare Ausgabe korrekt sein oder nicht. Zum Beispiel
   wird die Ausgabe in der standardmäßigen cmd.exe und auf einem System mit
   der OEM-Codepage 437 in den Codepages 1251, 1252, 1253 und einigen anderen
   korrekt angezeigt, wenn UTF-8 verwendet wird. Auf dem gleichen System
   werden Zeichen in Codepages wie 20932 wahrscheinlich nicht korrekt
   angezeigt. Dies hängt ab von den jeweiligen Systemregel für die Codepage,
   der Kompatibilität der Schriftart und dem verwendeten Konsolenprogramm. PHP
   konfiguriert die Codepage der Konsole automatisch gemäß den
   Kodierungsregeln der php.ini. In manchen Fällen kann es das Ergebnis
   verbessern, wenn eine andere Konsole verwendet wird als cmd.exe selbst.
  </p>
  <p class="para">
   Es ist jedoch zu beachten, dass ein Wechsel der Codepage zur Laufzeit nach
   dem Start der Anfrage unerwartete Nebeneffekte auf die CLI haben kann. Die
   bevorzugte Methode führt über die php.ini. Wenn PHP-CLI in einem
   Konsolen-Emulator verwendet wird, der kein Unicode unterstützt, kann dieser
   Weg notwendig sein, um eine Änderung der Konsolenkodierung zu vermeiden. Um
   dies zu erreichen, wird empfohlen, die Standard- oder interne Kodierung
   entsprechend der ANSI-Codepage einzustellen. Eine Alternative ist, die
   INI-Direktiven output_encoding und input_encoding auf die gewünschte
   Codepage zu setzen, wobei in diesem Fall der Unterschied zwischen interner
   und E/A-Codepage jedoch wahrscheinlich zu Zeichensalat führt. In seltenen
   Fällen kann es vorkommen, dass bei einem Absturz von PHP die ursprüngliche
   Konsolen-Codepage möglicherweise nicht wiederhergestellt wird. In diesem
   Fall kann der Befehl chcp verwendet werden, um sie manuell
   wiederherzustellen.
  </p>
  <p class="para">
   Besondere Vorsicht ist bei DBCS-Systemen (Systeme mit
   Doublebyte-Characterset) geboten - die Codepage zur Laufzeit mittels
   <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span> zu ändern, kann zu Darstellungsproblemen
   führen. Der Unterschied zu Nicht-DBCS-Systemen ist, dass die erweiterten
   Zeichen zwei Konsolenzellen für die Anzeige benötigen. In bestimmten Fällen
   kann es vorkommen, dass Zeichen in den Glyphensatz der Schriftart
   abgebildet werden, ohne die Schriftart zu ändern. Dies liegt in der Natur
   der DBCS-Systeme und die einfachste Methode, Darstellungsprobleme zu
   vermeiden, besteht darin, die Codepage nicht per
   <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span> zu ändern.
  </p>
  <p class="para">
   Infolge der Unterstützung von UTF-8 in den Streams sind PHP-Skripte nicht
   mehr auf ASCII- oder ANSI-Dateinamen beschränkt. Dies wird standardmäßig
   von CLI unterstützt. Für andere SAPIs ist die Dokumentation für den
   entsprechenden Server hilfreich.
  </p>
  <p class="para">
   Die Unterstützung langer Pfade ist transparent. Pfaden, die mehr als 260
   Bytes haben, wird automatisch ein <code class="literal">\?\</code> vorangestellt. Die
   maximale Pfadlänge ist auf 2048 Bytes begrenzt. Es ist zu beachten, dass
   die Begrenzung der Pfadsegmente (Länge des Basisnamens) weiterhin gilt.
  </p>
  <p class="para">
   Um die beste Portabilität zu erreichen, wird dringend empfohlen, für
   Dateinamen, I/O und andere verwandte Themen UTF-8 zu verwenden. Außerdem
   ist für Konsolenanwendungen eine TrueType-Schriftart zu bevorzugen. Darüber
   hinaus wird davon abgeraten, ini_set() für für die Änderung der Codepage zu
   verwenden.
  </p>
 </div>

 <div class="sect2" id="migration71.windows-support.readline">
  <h3 class="title">readline</h3>
  <p class="para">
   Die Erweiterung <a href="book.readline.php" class="link">readline</a> wird nun von
   der <a href="http://mingweditline.sourceforge.net/" class="link external">&raquo;&nbsp;WinEditLine</a>-Bibliothek
   unterstützt, wodurch die interaktive <abbr title="Command Line Interpreter/Interface">CLI</abbr>-Shell nun
   ebenfalls unterstützt wird (<code class="literal">php.exe -a</code>).
  </p>
 </div>

 <div class="sect2" id="migration71.windows-support.php-fcgi-children">
  <h3 class="title">PHP_FCGI_CHILDREN</h3>
  <p class="para">
   Die Umgebungsvariable <var class="varname">PHP_FCGI_CHILDREN</var> wird nun
   berücksichtigt. Wenn sie definiert ist, führt der erste
   <var class="filename">php-cgi.exe</var>-Prozess die angegebene Anzahl von
   Unterprozessen aus. Diese teilen sich denselben TCP-Socket.
  </p>
 </div>

 <div class="sect2" id="migration71.windows-support.ftok">
  <h3 class="title">ftok()</h3>
  <p class="para">
   Die Unterstützung für <span class="function"><a href="function.ftok.php" class="function">ftok()</a></span> wurde hinzugefügt
  </p>
 </div>

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