<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration81.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'migration81.other-changes.php',
    1 => 'Sonstige &Auml;nderungen',
    2 => 'Sonstige &Auml;nderungen',
  ),
  'up' => 
  array (
    0 => 'migration81.php',
    1 => 'Migration von PHP 8.0.x auf PHP 8.1.x',
  ),
  'prev' => 
  array (
    0 => 'migration81.deprecated.php',
    1 => 'Veraltete Features',
  ),
  'next' => 
  array (
    0 => 'migration80.php',
    1 => 'Migration von PHP 7.4.x auf PHP 8.0.x',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'appendices/migration81/other-changes.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration81.other-changes" class="sect1">
 <h2 class="title">Sonstige Änderungen</h2>

 <div class="sect2" id="migration81.other-changes.sapi">
  <h3 class="title">Änderungen in SAPI-Modulen</h3>

  <div class="sect3" id="migration81.other-changes.sapi.cli">
   <h4 class="title">CLI</h4>

   <p class="para">
    Die Verwendung der Option <strong class="option unknown">-a</strong> ohne die
    <a href="book.readline.php" class="link">Erweiterung readline</a> führt nun zu
    einem Fehler. Zuvor hatte <strong class="option unknown">-a</strong> ohne readline, abgesehen von
    der zusätzliche Meldung <code class="literal">&quot;Interactive mode enabled&quot;</code>, das
    gleiche Verhalten wie der Aufruf von <strong class="command">php</strong> ohne
    Parameter. Dieser Modus war <em>nicht</em> interaktiv.
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.sapi.phpdbg">
   <h4 class="title">PHPDBG</h4>

   <p class="para">
    Die Fähigkeit, remote zu debuggen, wurde von
    <a href="book.phpdbg.php" class="link">phpdbg</a> entfernt.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.other-changes.functions">
  <h3 class="title">Geänderte Funktionen</h3>

  <div class="sect3" id="migration81.other-changes.functions.core">
   <h4 class="title">PHP-Kern</h4>

   <p class="para">
    Die Reihenfolge der Eigenschaften, die in <a href="control-structures.foreach.php" class="link"><code class="literal">foreach</code></a>,
    <span class="function"><a href="function.var-dump.php" class="function">var_dump()</a></span>, <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span>,
    Objektvergleichen etc. verwendet werden, wurde geändert. Die Eigenschaften
    sind jetzt so geordnet, wie sie deklariert und vererbt wurden. Die
    Eigenschaften, die in einer Basisklasse deklariert sind, stehen vor den
    Kind-Eigenschaften.
   </p>
   <p class="para">
    Diese Reihenfolge entspricht dem internen Layout der Eigenschaften in der
    <code class="code">zend_object</code>-Struktur und reproduziert die Reihenfolge in
    <code class="code">default_properties_table[]</code> und
    <code class="code">properties_info_table[]</code>. Die alte Reihenfolge war nicht
    dokumentiert und wurde durch Implementierungsdetails der Klassenvererbung
    verursacht.
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.functions.filter">
   <h4 class="title">Filter</h4>

   <p class="para">
    Das Flag <strong><code><a href="filter.constants.php#constant.filter-flag-allow-octal">FILTER_FLAG_ALLOW_OCTAL</a></code></strong> des Filters
    <strong><code><a href="filter.constants.php#constant.filter-validate-int">FILTER_VALIDATE_INT</a></code></strong> akzeptiert nun oktale
    Zeichenketten mit vorangestelltem Oktalpräfix
    (<code class="literal">&quot;0o&quot;</code>/<code class="literal">&quot;0O&quot;</code>).
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.functions.gmp">
   <h4 class="title">GMP</h4>

   <p class="para">
    Alle <a href="book.gmp.php" class="link">GMP</a>-Funktionen akzeptieren nun oktale
    Zeichenketten mit vorangestelltem Oktalpräfix
    (<code class="literal">&quot;0o&quot;</code>/<code class="literal">&quot;0O&quot;</code>).
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.functions.pdo-odbc">
   <h4 class="title">PDO ODBC</h4>

   <p class="para">
    Die Methode <span class="methodname"><a href="pdo.getattribute.php" class="methodname">PDO::getAttribute()</a></span> gibt in Verbindung
    mit <strong><code><a href="pdo.constants.php#pdo.constants.attr-server-info">PDO::ATTR_SERVER_INFO</a></code></strong> und
    <strong><code><a href="pdo.constants.php#pdo.constants.attr-server-version">PDO::ATTR_SERVER_VERSION</a></code></strong> nun Werte zurück, anstatt
    eine <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span> auszulösen.
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.functions.reflection">
   <h4 class="title">Reflection</h4>

   <p class="para">
    Die Methoden <span class="methodname"><a href="reflectionproperty.setaccessible.php" class="methodname">ReflectionProperty::setAccessible()</a></span>
    und <span class="methodname"><a href="reflectionmethod.setaccessible.php" class="methodname">ReflectionMethod::setAccessible()</a></span> haben keine
    Auswirkung mehr. Bei Eigenschaften und Methoden wird nun immer davon
    ausgegangen, dass sie über Reflection zugänglich sind.
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.functions.standard">
   <h4 class="title">Standard</h4>

   <p class="para">
    <span class="function"><a href="function.syslog.php" class="function">syslog()</a></span> ist nun binärsicher.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.other-changes.extensions">
  <h3 class="title">Sonstige Änderungen bei Erweiterungen</h3>

  <div class="sect3" id="migration81.other-changes.extensions.gd">
   <h4 class="title">GD</h4>

   <p class="para">
    <span class="function"><a href="function.imagewebp.php" class="function">imagewebp()</a></span> kann nun durch Übergabe von
    <strong><code><a href="image.constants.php#constant.img-webp-lossless">IMG_WEBP_LOSSLESS</a></code></strong> als Qualitätsparameter verlustfreie
    WebP-Kodierungen durchführen.
   </p>
   <p class="para">
    Diese Konstante ist nur definiert, wenn die verwendete libgd die
    verlustfreie WebP-Kodierung unterstützt.
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.extensions.mysqli">
   <h4 class="title">MySQLi</h4>

   <p class="para">
    Wenn PHP gegen die Bibliothek libmysqlclient gelinkt wird, sind nun die
    Funktionen <span class="methodname"><a href="mysqli-stmt.next-result.php" class="methodname">mysqli_stmt::next_result()</a></span> und
    <span class="methodname"><strong>mysqli::fetch_all()</strong></span> verfügbar.
   </p>
  </div>

  <div class="sect3" id="migration81.other-changes.extensions.openssl">
   <h4 class="title">OpenSSL</h4>

   <ul class="itemizedlist">
    <li class="listitem">
     <p class="para">
      Die <a href="book.openssl.php" class="link">Erweiterung OpenSSL</a> benötigt nun
      mindestens die OpenSSL-Version 1.0.2.
     </p>
    </li>
    <li class="listitem">
     <p class="para">
      OpenSSL 3.0 wird nun unterstützt. Es ist zu beachten, dass viele
      Verschlüsselungsmethoden nicht mehr standardmäßig aktiviert sind (es
      handelt sich um einen Teil des Legacy-Anbieters), und dass die
      Validierung (z. B. minimale Schlüsselgrößen) jetzt strenger ist.
     </p>
    </li>
   </ul>
  </div>

  <div class="sect3" id="migration81.other-changes.extensions.phar">
   <h4 class="title">Phar</h4>

   <ul class="itemizedlist">
    <li class="listitem">
     <p class="para">
      Für Signaturen wird nun standardmäßig SHA256 verwendet.
     </p>
    </li>
    <li class="listitem">
     <p class="para">
      Die Unterstützung für OpenSSL_SHA256- und OpenSSL_SHA512-Signaturen
      wurde hinzugefügt.
     </p>
    </li>
   </ul>
  </div>

  <div class="sect3" id="migration81.other-changes.extensions.snmp">
   <h4 class="title">SNMP</h4>

   <ul class="itemizedlist">
    <li class="listitem">
     <p class="para">
      Für das Sicherheitsprotokoll wurde die Unterstützung für SHA256 und
      SHA512 hinzugefügt.
     </p>
    </li>
   </ul>
  </div>

  <div class="sect3" id="migration81.other-changes.extensions.standard">
   <h4 class="title">Standard</h4>

   <p class="para">
    <code class="code">--with-password-argon2</code> verwendet nun pkg-config, um libargon2
    zu erkennen. Aus diesem Grund sollte ein alternativer Speicherort für
    libargon2 nun mittels <var class="envar">PKG_CONFIG_PATH</var> angegeben werden.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.other-changes.ini">
  <h3 class="title">Änderungen bei der Handhabung von INI-Dateien</h3>

  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Die INI-Direktive
     <a href="errorfunc.configuration.php#ini.log-errors-max-len" class="link">log_errors_max_len</a> wurde
     entfernt.
     Sie hatte seit PHP 8.0.0 keine Wirkung mehr.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Ein vorangestelltes Dollarzeichen in einer Zeichenkette mit
     Anführungszeichen kann nun maskiert werden: <code class="literal">&quot;\${&quot;</code> wird
     nun als Zeichenkette mit dem Inhalt <code class="literal">${</code> interpretiert.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Backslashes in Zeichenketten mit doppelten Anführungszeichen werden nun
     konsequenter als Maskierungs-Zeichen behandelt. Zuvor galt
     <code class="literal">&quot;foo\&quot;</code> gefolgt von etwas anderem als einem
     Zeilenumbruch als unvollständige Zeichenkette. Jetzt wird sie als
     Zeichenkette mit dem Inhalt <code class="literal">foo\</code> interpretiert. Als
     Ausnahme wird jedoch die Zeichenkette <code class="literal">&quot;foo\&quot;</code> gefolgt
     von einem Zeilenumbruch weiterhin als gültige Zeichenkette mit Inhalt
     <code class="literal">foo\</code> behandelt und nicht als unvollständige
     Zeichenkette. Diese Ausnahme existiert, um die einfache Verwendungen von
     Windows-Dateipfaden, z. B. <code class="literal">&quot;C:\foo\&quot;</code>, zu unterstützen.
    </p>
   </li>
  </ul>
 </div>

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