php-doc-en/appendices/migration81/other-changes.xml
George Peter Banyard 4d2479dcf3
Migration guide from PHP 8.0 to PHP 8.1 (#941)
Initial version for the PHP 8.0 to 8.1 migration guide.

Co-authored-by: Kamil Tekiela <tekiela246@gmail.com>
2021-09-22 15:13:39 +01:00

239 lines
7.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<sect1 xml:id="migration81.other-changes" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Other Changes</title>
<sect2 xml:id="migration81.other-changes.sapi">
<title>Changes in SAPI Modules</title>
<sect3 xml:id="migration81.other-changes.sapi.cli">
<title>CLI</title>
<para>
Using <option>-a</option> without the <link linkend="book.readline">readline extension</link> will now result in an error.
Previously, <option>-a</option> without readline had the same behavior as
calling <command>php</command> without any arguments, apart from printing an additional
<literal>"Interactive mode enabled"</literal> message.
This mode was <emphasis>not</emphasis> interactive.
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.sapi.phpdbg">
<title>PHPDBG</title>
<para>
Remote functionality from <link linkend="book.phpdbg">phpdbg</link> has been removed.
</para>
</sect3>
</sect2>
<sect2 xml:id="migration81.other-changes.functions">
<title>Changed Functions</title>
<sect3 xml:id="migration81.other-changes.functions.core">
<title>Core</title>
<para>
The order of properties used in &foreach;, <function>var_dump</function>,
<function>serialize</function>, object comparison, etc. was changed.
Properties are now ordered naturally according to their declaration
and inheritance. Properties declared in a base class are going
to be before the child properties.
</para>
<para>
This order is consistent with internal layout of properties in
<code>zend_object</code> structure and repeats the order in
<code>default_properties_table[]</code> and <code>properties_info_table[]</code>.
The old order was not documented and was caused by class inheritance implementation details.
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.functions.filter">
<title>Filter</title>
<para>
The <constant>FILTER_FLAG_ALLOW_OCTAL</constant> flag of the
<constant>FILTER_VALIDATE_INT</constant> filter
now accept octal string with the leading octal prefix
(<literal>"0o"</literal>/<literal>"0O"</literal>).
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.functions.gmp">
<title>GMP</title>
<para>
All <link linkend="book.gmp">GMP</link> functions now accept octal string with the leading octal prefix
(<literal>"0o"</literal>/<literal>"0O"</literal>).
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.functions.pdo-odbc">
<title>PDO ODBC</title>
<para>
<methodname>PDO::getAttribute</methodname> with
<constant>PDO::ATTR_SERVER_INFO</constant> and
<constant>PDO::ATTR_SERVER_VERSION</constant>
now return values instead of throwing <classname>PDOException</classname>.
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.functions.reflection">
<title>Reflection</title>
<para>
<methodname>ReflectionProperty::setAccessible</methodname> and
<methodname>ReflectionMethod::setAccessible</methodname>
no longer have an effect.
Properties and methods are now always considered accessible via Reflection.
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.functions.standard">
<title>Standard</title>
<para>
<function>syslog</function> is now binary safe.
</para>
</sect3>
</sect2>
<sect2 xml:id="migration81.other-changes.extensions">
<title>Other Changes to Extensions</title>
<sect3 xml:id="migration81.other-changes.extensions.gd">
<title>GD</title>
<para>
<function>imagewebp</function> can now do lossless WebP encoding
by passing <constant>IMG_WEBP_LOSSLESS</constant> as the quality.
</para>
<para>
This constant is only defined, if the used libgd supports
lossless WebP encoding.
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.extensions.mysqli">
<title>MySQLi</title>
<para>
<methodname>mysqli_stmt::next_result</methodname> and
<methodname>mysqli::fetch_all</methodname>
are now available when linking against libmysqlclient.
</para>
</sect3>
<sect3 xml:id="migration81.other-changes.extensions.openssl">
<title>OpenSSL</title>
<itemizedlist>
<listitem>
<para>
The <link linkend="book.openssl">OpenSSL extension</link> now requires at least OpenSSL version 1.0.2.
</para>
</listitem>
<listitem>
<para>
OpenSSL 3.0 is now supported. Be aware that many ciphers are no longer
enabled by default (part of the legacy provider), and that parameter
validation (e.g. minimum key sizes) is stricter now.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 xml:id="migration81.other-changes.extensions.phar">
<title>Phar</title>
<itemizedlist>
<listitem>
<para>
SHA256 is now used by default for signatures.
</para>
</listitem>
<listitem>
<para>
Added support for OpenSSL_SHA256 and OpenSSL_SHA512 signatures.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 xml:id="migration81.other-changes.extensions.snmp">
<title>SNMP</title>
<itemizedlist>
<listitem>
<para>
Added support for SHA256 and SHA512 for the security protocol.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 xml:id="migration81.other-changes.extensions.standard">
<title>Standard</title>
<para>
<code>--with-password-argon2</code> now uses pkg-config to detect libargon2.
As such, an alternative libargon2 location should now be specified using
<envar>PKG_CONFIG_PATH</envar>.
</para>
</sect3>
</sect2>
<sect2 xml:id="migration81.other-changes.ini">
<title>Changes to INI File Handling</title>
<itemizedlist>
<listitem>
<para>
The <link linkend="ini.log-errors-max-len">log_errors_max_len</link>
INI directive has been removed.
It no longer had an effect since PHP 8.0.0.
</para>
</listitem>
<listitem>
<para>
A leading dollar in a quoted string can now be escaped: <literal>"\${"</literal> will now be
interpreted as a string with contents <literal>${</literal>.
</para>
</listitem>
<listitem>
<para>
Backslashes in double quoted strings are now more consistently treated as
escape characters. Previously, <literal>"foo\\"</literal> followed by
something other than a newline was not considered as a terminated string.
It is now interpreted as a string with contents <literal>foo\</literal>.
However, as an exception, the string <literal>"foo\"</literal>
followed by a newline will continue to be treated as a valid string with
contents <literal>foo\</literal> rather than an unterminated string.
This exception exists to support naive uses of Windows file paths such as
<literal>"C:\foo\"</literal>.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->