php-doc-en/appendices/migration53.xml
2016-04-06 13:40:26 +00:00

2489 lines
65 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<appendix xml:id="migration53" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Migrating from PHP 5.2.x to PHP 5.3.x</title>
<simpara>
&manual.migration.seealso;
<link linkend="migration5">5.0.x</link>,
<link linkend="migration51">5.1.x</link>,
<link linkend="migration52">5.2.x</link>,
<link linkend="migration54">5.4.x</link>,
<link linkend="migration55">5.5.x</link> and
<link linkend="migration56">5.6.x</link>.
</simpara>
<section xml:id="migration53.changes">
<title>What has changed in PHP 5.3.x</title>
<simpara>
Most improvements in PHP 5.3.x have no impact on existing code. There are
a <link linkend="migration53.incompatible">few incompatibilities</link>
and <link linkend="migration53.new-features">new features</link> that should
be considered, and code should be tested before switching PHP
versions in production environments.
</simpara>
<simpara>
For systems being upgraded from an older version of PHP, the relevant
documentation is available at:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="migration52">Upgrade Notes for PHP 5.2.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration51">Upgrade Notes for PHP 5.1.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration5">Migrating from PHP 4 to PHP 5</link>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.incompatible">
<title>Backward Incompatible Changes</title>
<simpara>
Although most existing PHP 5 code should work without changes, please take
note of some backward incompatible changes:
</simpara>
<itemizedlist>
<listitem>
<simpara>
The newer internal parameter parsing API has been applied across all the
extensions bundled with PHP 5.3.x. This parameter parsing API causes
functions to return &null; when passed incompatible parameters. There are
some exceptions to this rule, such as the <function>get_class</function>
function, which will continue to return &false; on error.
</simpara>
</listitem>
<listitem>
<simpara>
<function>clearstatcache</function> no longer clears the realpath cache by
default.
</simpara>
</listitem>
<listitem>
<simpara>
<function>realpath</function> is now fully platform-independent.
Consequence of this is that invalid relative paths such as
<literal>__FILE__ . "/../x"</literal> do not work anymore.
</simpara>
</listitem>
<listitem>
<simpara>
The <function>call_user_func</function> family of functions now propagate
<literal>$this</literal> even if the callee is a parent class.
</simpara>
</listitem>
<listitem>
<simpara>
The array functions <function>natsort</function>,
<function>natcasesort</function>, <function>usort</function>,
<function>uasort</function>, <function>uksort</function>,
<function>array_flip</function>, and <function>array_unique</function> no
longer accept objects passed as arguments. To apply these functions to an
object, cast the object to an array first.
</simpara>
</listitem>
<listitem>
<simpara>
The behaviour of functions with by-reference parameters called by value has
changed. Where previously the function would accept the by-value argument,
a fatal error is now emitted. Any previous code passing constants or
literals to functions expecting references, will need altering to assign
the value to a variable before calling the function.
</simpara>
</listitem>
<listitem>
<simpara>
The new mysqlnd library necessitates the use of MySQL 4.1's newer 41-byte
password format. Continued use of the old 16-byte passwords will cause
<function>mysql_connect</function> and similar functions to emit the error,
<literal>"mysqlnd cannot connect to MySQL 4.1+ using old
authentication."</literal>
</simpara>
</listitem>
<listitem>
<simpara>
The new mysqlnd library does not read mysql configuration files
(my.cnf/my.ini), as the older libmysqlclient library does. If your code relies on
settings in the configuration file, you can load it explicitly with the
<function>mysqli_options</function> function. Note that this means the
PDO specific constants <constant>PDO::MYSQL_ATTR_READ_DEFAULT_FILE</constant>
and <constant>PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</constant> are not defined
if MySQL support in PDO is compiled with mysqlnd.
</simpara>
</listitem>
<listitem>
<simpara>
The trailing / has been removed from the <classname>SplFileInfo</classname>
class and other related directory classes.
</simpara>
</listitem>
<listitem>
<simpara>
The <link linkend="object.tostring">__toString()</link> magic
method can no longer accept arguments.
</simpara>
</listitem>
<listitem>
<simpara>
The magic methods
<link linkend="object.get">__get()</link>,
<link linkend="object.set">__set()</link>,
<link linkend="object.isset">__isset()</link>,
<link linkend="object.unset">__unset()</link>, and
<link linkend="object.call">__call()</link> must always
be public and can no longer be static. Method signatures are now enforced.
</simpara>
</listitem>
<listitem>
<simpara>
The <link linkend="object.call">__call()</link>
magic method is now invoked on access to private and protected methods.
</simpara>
</listitem>
<listitem>
<simpara>
<function>func_get_arg</function>, <function>func_get_args</function> and
<function>func_num_args</function> can no longer be called from the
outermost scope of a file that has been included by calling
<function>include</function> or <function>require</function> from within
a function in the calling file.
</simpara>
</listitem>
<listitem>
<simpara>
An emulation layer for the MHASH extension to wrap around the Hash extension
have been added. However not all the algorithms are covered, notable the
s2k hashing algorithm. This means that s2k hashing is no longer available
as of PHP 5.3.0.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following keywords are now reserved and may not be used in function,
class, etc. names.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="control-structures.goto">goto</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.namespaces">namespace</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-features">
<title>New features</title>
<simpara>
PHP 5.3.0 offers a wide range of new features:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Support for <link linkend="language.namespaces">namespaces</link> has been
added.
</simpara>
</listitem>
<listitem>
<simpara>
Support for <link linkend="language.oop5.late-static-bindings">Late Static
Bindings</link> has been added.
</simpara>
</listitem>
<listitem>
<simpara>
Support for <link linkend="control-structures.goto">jump labels</link>
(limited goto) has been added.
</simpara>
</listitem>
<listitem>
<simpara>
Support for native <link linkend="functions.anonymous">Closures</link>
(Lambda/Anonymous functions) has been added.
</simpara>
</listitem>
<listitem>
<simpara>
There are two new magic methods,
<link linkend="object.callstatic">__callStatic()</link> and
<link linkend="object.invoke">__invoke()</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.string.syntax.nowdoc">Nowdoc</link> syntax is
now supported, similar to
<link linkend="language.types.string.syntax.heredoc">Heredoc</link> syntax,
but with single quotes.
</simpara>
</listitem>
<listitem>
<simpara>
It is now possible to use
<link linkend="language.types.string.syntax.heredoc">Heredoc</link>s to
initialize static variables and class properties/constants.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.string.syntax.heredoc">Heredoc</link>s may
now be declared using double quotes, complementing the
<link linkend="language.types.string.syntax.nowdoc">Nowdoc</link> syntax.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.constants.syntax">Constants</link> can now be
declared outside a class using the <literal>const</literal> keyword.
</simpara>
</listitem>
<listitem>
<simpara>
The <link linkend="language.operators.comparison.ternary">ternary</link>
operator now has a shorthand form: <literal>?:</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
The HTTP stream wrapper now considers all status codes from 200 to 399 to
be successful.
</simpara>
</listitem>
<listitem>
<simpara>
Dynamic access to static methods is now possible:
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class C {
public static $foo = 123;
}
$a = "C";
echo $a::$foo;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
123
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<simpara>
<link linkend="language.exceptions">Exceptions</link> can now be nested:
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class MyCustomException extends Exception {}
try {
throw new MyCustomException("Exceptional", 112);
} catch (Exception $e) {
/* Note the use of the third parameter to pass $e
* into the RuntimeException. */
throw new RuntimeException("Rethrowing", 911, $e);
}
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
A <link linkend="features.gc">garbage collector</link> for circular
references has been added, and is enabled by default.
</simpara>
</listitem>
<listitem>
<simpara>
The <function>mail</function> function now supports logging of sent email
via the <link linkend="ini.mail.log">mail.log</link> configuration
directive. (Note: This only applies to email sent through this function.)
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.windows">
<title>Changes made to Windows support</title>
<simpara>
Changes to the Windows releases:
</simpara>
<itemizedlist>
<listitem>
<simpara>
The minimum Windows version is now Windows XP SP3; Windows 98, ME, 2000 and NT4
are no longer supported.
</simpara>
</listitem>
<listitem>
<simpara>
Windows binaries now target i586 and later. i386 and i486 are not
supported.
</simpara>
</listitem>
<listitem>
<simpara>
There is now experimental support for x64 versions of PHP on Windows.
</simpara>
</listitem>
<listitem>
<simpara>
There is now compiler support for Visual C++ 9 (VC9), using Visual Studio
2008. Snapshots and releases will now also be available for VC9. Old
binaries using VC6 are still supported and released in the line with VC9.
</simpara>
</listitem>
<listitem>
<simpara>
The <link linkend="ref.pdo-oci">PDO_OCI</link>
<literal>php_pdo_oci8.dll</literal> library (for use with Oracle version 8
client libraries) is no longer being built. Instead, use
<literal>php_pdo_oci.dll</literal> (note no '8') with Oracle 10 or 11
client libraries. Connection to other database versions is still supported.
</simpara>
</listitem>
<listitem>
<simpara>
For the <link linkend="book.oci8">OCI8</link> extension, a new library
<literal>php_oci8_11g.dll</literal> is available in addition to
<literal>php_oci8.dll</literal>. Only one can be enabled at any time. Use
<literal>php_oci8.dll</literal> with Oracle 10.2 client libraries. Use
<literal>php_oci8_11g.dll</literal> with Oracle 11 or later client libraries.
Connection to other database versions is still supported.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Windows support has been added for the following functions:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>checkdnsrr</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>dns_get_record</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>fnmatch</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>getmxrr</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>getopt</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>imagecolorclosesthwb</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>inet_ntop</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>inet_pton</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>link</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>linkinfo</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>mcrypt_create_iv</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>readlink</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>socket_create_pair</function>
- This function was previously available on Windows, but was disabled as of
PHP 4.3.0 due to a bug.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_socket_pair</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>symlink</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>time_nanosleep</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>time_sleep_until</function>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Other changes:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Improved portability of the <function>stat</function>,
<function>touch</function>, <function>filemtime</function>,
<function>filesize</function> functions, and other related functions (100%
portable for the available data).
</simpara>
</listitem>
<listitem>
<simpara>
It is now possible to create hard links on Windows using the
<function>link</function> function, and symbolic links using the
<function>symlink</function> function. Hard links are available as of
Windows 2000, and symbolic links as of Windows Vista.
</simpara>
</listitem>
<listitem>
<simpara>
The Windows version of PHP now exposes a set of constants prefixed
<literal>PHP_WINDOWS_*</literal>. A list of these constants and their usage
can be found at <xref linkend="info.constants" />.
</simpara>
</listitem>
</itemizedlist>
<warning>
<simpara>
Support for the ISAPI module has been dropped. Use the improved FastCGI SAPI
module instead.
</simpara>
</warning>
<note>
<simpara>
A new dedicated site for PHP on Windows is now available, including
downloads, release candidates, and snapshots in various flavors
(thread-safe/not-thread-safe, VC6/VC9, x86/x64). The URL of this site is
<link xlink:href="&url.php.windows;">&url.php.windows;</link>.
</simpara>
</note>
</section>
<section xml:id="migration53.sapi">
<title>Changes in SAPI modules</title>
<itemizedlist>
<listitem>
<simpara>
A new SAPI module named litespeed is now available.
</simpara>
</listitem>
<listitem>
<simpara>
FastCGI support in the CGI SAPI is now always enabled and can not be
disabled. See <literal>sapi/cgi/CHANGES</literal> for more details.
</simpara>
</listitem>
<listitem>
<simpara>
A new CGI SAPI option, <literal>-T</literal>, can be used to measure
repeated execution time of a script.
</simpara>
</listitem>
<listitem>
<simpara>
CGI/FastCGI now has support for .htaccess-style user-defined &php.ini;
files.
</simpara>
</listitem>
<listitem>
<simpara>
The <function>dl</function> function is now disabled by default, and is now
available only under the CLI, CGI, and embed SAPIs.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.deprecated">
<title>Deprecated features in PHP 5.3.x</title>
<simpara>
PHP 5.3.0 introduces two new error levels: <constant>E_DEPRECATED</constant>
and <constant>E_USER_DEPRECATED</constant>. The
<constant>E_DEPRECATED</constant> error level is used to indicate that a
function or feature has been deprecated. The
<constant>E_USER_DEPRECATED</constant> level is intended for indicating
deprecated features in user code, similarly to the
<constant>E_USER_ERROR</constant> and <constant>E_USER_WARNING</constant>
levels.
</simpara>
<simpara>
The following is a list of deprecated INI directives. Use of any of these INI
directives will cause an <constant>E_DEPRECATED</constant> error to be thrown
at startup.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.define-syslog-variables">define_syslog_variables</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.register-globals">register_globals</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.register-long-arrays">register_long_arrays</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.safe-mode">safe_mode</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>
</simpara>
</listitem>
<listitem>
<simpara>
Comments starting with '#' are now deprecated in .INI files.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Deprecated functions:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>call_user_method</function> (use
<function>call_user_func</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>call_user_method_array</function> (use
<function>call_user_func_array</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>define_syslog_variables</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>dl</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>ereg</function> (use <function>preg_match</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>ereg_replace</function> (use <function>preg_replace</function>
instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>eregi</function> (use <function>preg_match</function> with the
<literal>'i'</literal> modifier instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>eregi_replace</function> (use <function>preg_replace</function>
with the <literal>'i'</literal> modifier instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>mcrypt_generic_end</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>set_magic_quotes_runtime</function> and its alias,
<function>magic_quotes_runtime</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_register</function> (use the <varname>$_SESSION</varname>
superglobal instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_unregister</function> (use the
<varname>$_SESSION</varname> superglobal instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_is_registered</function> (use the
<varname>$_SESSION</varname> superglobal instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>set_socket_blocking</function> (use
<function>stream_set_blocking</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>split</function> (use <function>preg_split</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>spliti</function> (use <function>preg_split</function> with the
<literal>'i'</literal> modifier instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>sql_regcase</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysql_db_query</function> (use
<function>mysql_select_db</function> and <function>mysql_query</function>
instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysql_escape_string</function> (use
<function>mysql_real_escape_string</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
Passing locale category names as strings is now deprecated. Use the LC_*
family of constants instead.
</simpara>
</listitem>
<listitem>
<simpara>
The <parameter>is_dst</parameter> parameter to <function>mktime</function>.
Use the new timezone handling functions instead.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Deprecated features:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Assigning the return value of
<link linkend="language.oop5.basic.new">new</link> by reference is now
deprecated.
</simpara>
</listitem>
<listitem>
<simpara>
Call-time pass-by-reference is now deprecated.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.undeprecated">
<title>Undeprecated features in PHP 5.3.x</title>
<simpara>
The <function>is_a</function> function has been undeprecated by popular
request; it will no longer issue an <constant>E_STRICT</constant> error.
</simpara>
</section>
<section xml:id="migration53.parameters">
<title>New Parameters</title>
<simpara>
Several functions were given new, optional parameters in PHP 5.3:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>clearstatcache</function>
- Added <parameter>clear_realpath_cache</parameter> and
<parameter>filename</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>copy</function>
- Added a stream context parameter, <parameter>context</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>fgetcsv</function>
- Added <parameter>escape</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>ini_get_all</function>
- Added <parameter>details</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>nl2br</function>
- Added <parameter>is_xhtml</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>parse_ini_file</function>
- Added <parameter>scanner_mode</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>round</function>
- Added <parameter>mode</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_context_create</function>
- Added <parameter>params</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>strstr</function> and <function>stristr</function>
- Added <parameter>before_needle</parameter>.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">json</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>json_encode</function>
- Added <parameter>options</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>json_decode</function>
- Added <parameter>depth</parameter>.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.stream">Streams</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>stream_select</function>,
<function>stream_set_blocking</function>,
<function>stream_set_timeout</function>, and
<function>stream_set_write_buffer</function> now work with user-space
stream wrappers.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.sybase">sybase_ct</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>sybase_connect</function>
- Added <parameter>new</parameter>.
</simpara>
</listitem>
</itemizedlist>
<simpara>
New method parameters in PHP 5.3.0:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>Exception::__construct</methodname>
- Added <parameter>previous</parameter>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.functions">
<title>New Functions</title>
<simpara>
PHP 5.3 introduced some new functions:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>array_replace</function>
- Replaces elements from passed arrays into one array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>array_replace_recursive</function>
- Recursively replaces elements from passed arrays into one array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>class_alias</function>
- Creates an alias for a user defined class.
</simpara>
</listitem>
<listitem>
<simpara>
<function>forward_static_call</function>
- Call a user function from a method context.
</simpara>
</listitem>
<listitem>
<simpara>
<function>forward_static_call_array</function>
- Call a user function from a method context, with the arguments contained
in an array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_collect_cycles</function>
- Forces collection of any existing garbage cycles.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_disable</function>
- Deactivates the circular reference collector.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_enable</function>
- Activates the circular reference collector.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_enabled</function>
- Returns the status of the circular reference collector.
</simpara>
</listitem>
<listitem>
<simpara>
<function>get_called_class</function>
- Return the name of the class a static method is called in.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gethostname</function>
- Return the current host name for the local machine.
</simpara>
</listitem>
<listitem>
<simpara>
<function>header_remove</function>
- Removes an HTTP header previously set using the
<function>header</function> function.
</simpara>
</listitem>
<listitem>
<simpara>
<function>lcfirst</function>
- Make a string's first character lowercase.
</simpara>
</listitem>
<listitem>
<simpara>
<function>parse_ini_string</function>
- Parse a configuration string.
</simpara>
</listitem>
<listitem>
<simpara>
<function>quoted_printable_encode</function>
- Convert an 8 bit string to a quoted-printable string.
</simpara>
</listitem>
<listitem>
<simpara>
<function>str_getcsv</function>
- Parse a CSV string into an array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_context_set_default</function>
- Set the default stream context.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_supports_lock</function>
- Return &true; if the stream supports locking.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_context_get_params</function>
- Retrieve parameters from a stream context.
</simpara>
</listitem>
<listitem>
<simpara>
<function>streamWrapper::stream_cast</function>
- Retrieve the underlying stream resource.
</simpara>
</listitem>
<listitem>
<simpara>
<function>streamWrapper::stream_set_option</function>
- Change stream options
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.datetime">Date/Time</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>date_add</function>
- Adds an amount of days, months, years, hours, minutes and seconds to a
<classname>DateTime</classname> object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_create_from_format</function>
- Returns a new <classname>DateTime</classname> object formatted according
to the given format.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_diff</function>
- Returns the difference between two <classname>DateTime</classname>
objects.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_get_last_errors</function>
- Returns the warnings and errors from the last date/time operation.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_parse_from_format</function>
- Get information about a given date.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_sub</function>
- Subtracts an amount of days, months, years, hours, minutes and seconds
from a <classname>DateTime</classname> object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_version_get</function>
- Returns the version of the timezonedb.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.gmp">GMP</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>gmp_testbit</function>
- Tests whether a bit is set.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.hash">Hash</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>hash_copy</function>
- Copy hashing context.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.imap">IMAP</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>imap_gc</function>
- Clears IMAP cache.
</simpara>
</listitem>
<listitem>
<simpara>
<function>imap_utf8_to_mutf7</function>
- Encode a UTF-8 string to modified UTF-7.
</simpara>
</listitem>
<listitem>
<simpara>
<function>imap_mutf7_to_utf8</function>
- Decode a modified UTF-7 string to UTF-8.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">JSON</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>json_last_error</function>
- Returns the last JSON error that occurred.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.mysqli">MySQL Improved</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>mysqli_fetch_all</function>
- Fetches all result rows as an associative array, a numeric
array, or both.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_get_connection_stats</function>
- Returns statistics about the client connection.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_poll</function>
- Poll connections.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_reap_async_query</function>
- Get result from async query.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.openssl">OpenSSL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>openssl_random_pseudo_bytes</function>
- Returns a string of the given length specified, filled with pseudo-random
bytes.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcntl">PCNTL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>pcntl_signal_dispatch</function>
- Calls signal handlers for pending signals.
</simpara>
</listitem>
<listitem>
<simpara>
<function>pcntl_sigprocmask</function>
- Sets and retrieves blocked signals.
</simpara>
</listitem>
<listitem>
<simpara>
<function>pcntl_sigtimedwait</function>
- Wait for signals with a timeout.
</simpara>
</listitem>
<listitem>
<simpara>
<function>pcntl_sigwaitinfo</function>
- Wait for signals.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcre">PCRE</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>preg_filter</function>
- Perform a regular expression search and replace, returning only results
which matched the pattern.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.sem">Semaphore</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>msg_queue_exists</function>
- Check whether a message queue exists.
</simpara>
</listitem>
<listitem>
<simpara>
<function>shm_has_var</function>
- Checks whether a specific key exists inside a shared memory segment.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following functions are now natively implemented, making them available
on all operating systems which can run PHP:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>acosh</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>asinh</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>atanh</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>expm1</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>log1p</function>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-stream-wrappers">
<title>New stream wrappers</title>
<simpara>
The following stream wrappers were introduced in 5.3.0:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="wrappers.glob">glob://</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="wrappers.phar">phar://</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-stream-filters">
<title>New stream filters</title>
<simpara>
The following stream filters were introduced in 5.3.0:
</simpara>
<itemizedlist>
<listitem>
<simpara>
dechunk (reverses HTTP chunked encoding)
</simpara>
</listitem>
<listitem>
<simpara>
The bz2.decompress filter now supports concatenation.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.class-constants">
<title>New Class Constants</title>
<simpara>
Several new class constants were introduced in 5.3.0:
</simpara>
<simpara><link linkend="ref.pdo-firebird">PDO_FIREBIRD</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>PDO::FB_ATTR_DATE_FORMAT</constant>
- Sets the format for dates.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FB_ATTR_TIME_FORMAT</constant>
- Sets the format for time.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FB_ATTR_TIMESTAMP_FORMAT</constant>
- Sets the format for timestamps.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.methods">
<title>New Methods</title>
<simpara>
Several new methods were introduced in 5.3.0:
</simpara>
<simpara><link linkend="book.datetime">Date/Time</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>DateTime::add</function>
- Adds an amount of days, months, years, hours, minutes and seconds to a
<classname>DateTime</classname> object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::createFromFormat</function>
- Returns a new <classname>DateTime</classname> object formatted according
to the given format.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::diff</function>
- Returns the difference between two <classname>DateTime</classname>
objects.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::getLastErrors</function>
- Returns the warnings and errors from the last date/time operation.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::sub</function>
- Subtracts an amount of days, months, years, hours, minutes and seconds
from a <classname>DateTime</classname> object.
</simpara>
</listitem>
</itemizedlist>
<simpara><classname>Exception</classname>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>Exception::getPrevious</function>
- Retrieves the previous exception.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.dom">DOM</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>DOMNode::getLineNo</function>
- Get the line number of a parsed node.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="ref.pdo-firebird">PDO_FIREBIRD</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>PDO::setAttribute</function>
- Sets an attribute.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.reflection">Reflection</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>ReflectionClass::getNamespaceName</methodname>
- Returns the name of namespace where this class is defined.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionClass::getShortName</methodname>
- Returns the short name of this class (without namespace part).
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionClass::inNamespace</methodname>
- Returns whether this class is defined in a namespace.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionFunction::getNamespaceName</methodname>
- Returns the name of namespace where this function is defined.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionFunction::getShortName</methodname>
- Returns the short name of the function (without namespace part).
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionFunction::inNamespace</methodname>
- Returns whether this function is defined in a namespace.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionProperty::setAccessible</methodname>
- Sets whether non-public properties can be requested.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.spl">SPL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>SplObjectStorage::addAll</function>
- Add all elements from another SplObjectStorage object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>SplObjectStorage::removeAll</function>
- Remove all elements from another SplObjectStorage object.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.xsl">XSL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>XSLTProcessor::setProfiling</function>
- Sets the profiling output file.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-extensions">
<title>New Extensions</title>
<simpara>
The following new extensions are added (by default) as of PHP 5.3.0:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.enchant">Enchant</link>
- An abstraction layer above various spelling libraries
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.fileinfo">Fileinfo</link>
- An improved and more solid replacement, featuring full BC, for the
<link linkend="book.mime-magic">Mimetype</link> extension, which has been
removed.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.intl">INTL</link>
- Internationalization extension. INTL is a wrapper around the
<link xlink:href="&url.icu.home;">ICU</link> library.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.phar">Phar</link>
- Implementation of PHP-Archive files.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.sqlite3">SQLite3</link>
- Support for SQLite version 3 databases.
</simpara>
</listitem>
</itemizedlist>
<simpara>
mysqlnd is a new core library shipped with PHP. It is a PHP-specific
replacement for libmysqlclient. mysqlnd will be used to build the
<link linkend="book.mysql">mysql</link>,
<link linkend="book.mysqli">mysqli</link>
and <link linkend="ref.pdo-mysql">PDO_MySQL</link> extensions if libmysqlclient
isn't found on the system. It may also be used instead of libmysqlclient even when
libmysqlclient is present. mysqlnd is recommended for all PHP installations for
performance reasons.
</simpara>
</section>
<section xml:id="migration53.removed-extensions">
<title>Removed Extensions</title>
<simpara>
These extensions have been moved to PECL and are no longer part of the PHP
distribution. The PECL package versions of these extensions will be created
according to user demand.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.dbase">dbase</link>
- No longer maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.fbsql">fbsql</link>
- No longer maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.fdf">fdf</link>
- Maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.ming">ming</link>
- Maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.msql">msql</link>
- No longer maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.ncurses">ncurses</link>
- Maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.sybase">sybase</link>
- Discontinued; use the <link linkend="book.sybase">sybase_ct</link>
extension instead
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.mhash">mhash</link>
- Discontinued; use the <link linkend="book.hash">hash</link> extension
instead. <link linkend="book.hash">hash</link> has full mhash
compatibility; all existing applications using the old functions will
continue to work.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.extensions-other">
<title>Other changes to extensions</title>
<simpara>
The following extensions can no longer be disabled during build
configuration:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.pcre">PCRE</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.reflection">Reflection</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.spl">SPL</link>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Changes in extension behaviour, and new features:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.datetime">Date and Time</link>
- The TZ environment variable is no longer used to guess the timezone
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.curl">cURL</link>
- cURL now supports SSH
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.network">Network</link>
- <function>dns_check_record</function> now returns an extra "entries"
index, containing the TXT elements.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.hash">Hash</link>
- The SHA-224 and salsa hash algorithms are now supported.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.mbstring">mbstring</link>
- Now supports CP850 encoding.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.oci8">OCI8</link>
- A call to <function>oci_close</function> on a persistent connection, or a
variable referencing a persistent connection going out of scope, will now
roll back any uncommitted transaction. To avoid unexpected behavior,
explicitly issue a commit or roll back as needed. The old behavior can be
enabled with the INI directive
<link linkend="ini.oci8.old-oci-close-semantics">oci8.old_oci_close_semantics</link>.
</simpara>
<simpara>
Database Resident Connection Pooling (DRCP) and Fast Application
Notification (FAN) are now supported.
</simpara>
<simpara>
Oracle External Authentication is now supported (except on Windows).
</simpara>
<simpara>
The <function>oci_bind_by_name</function> function now supports SQLT_AFC
(aka the CHAR datatype).
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.openssl">OpenSSL</link>
- OpenSSL digest and cipher functions are now supported. It is also
now possible to access the internal values of DSA, RSA and DH keys.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.session">Session</link>
- Sessions will no longer store session-files in <literal>"/tmp"</literal>
when <link linkend="ini.open-basedir">open_basedir</link> restrictions
apply, unless <literal>"/tmp"</literal> is explicitly added to the list of
allowed paths.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.soap">SOAP</link>
Now supports sending user supplied HTTP headers.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.mysqli">MySQLi</link>
Now supports persistent connections, by prepending the hostname with
<literal>"p:"</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.image">Image Processing and GD</link>
The "JPG Support" index returned from <function>gd_info</function> has
been renamed to "JPEG Support".
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.classes">
<title>New Classes</title>
<simpara>
The following classes were introduced in PHP 5.3.0:
</simpara>
<simpara><link linkend="book.datetime">Date/Time</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>DateInterval</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>DatePeriod</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.phar">Phar</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>Phar</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>PharData</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>PharException</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>PharFileInfo</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.spl">SPL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>FilesystemIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>GlobIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>MultipleIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>RecursiveTreeIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplDoublyLinkedList</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplFixedArray</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplHeap</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplMaxHeap</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplMinHeap</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplPriorityQueue</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplQueue</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplStack</classname>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.global-constants">
<title>New Global Constants</title>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>__DIR__</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>__NAMESPACE__</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>E_DEPRECATED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>E_USER_DEPRECATED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>INI_SCANNER_NORMAL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>INI_SCANNER_RAW</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_MAXPATHLEN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_NT_DOMAIN_CONTROLLER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_NT_SERVER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_NT_WORKSTATION</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_BUILD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_MAJOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_MINOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_PLATFORM</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_PRODUCTTYPE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_SP_MAJOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_SP_MINOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_SUITEMASK</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.curl">cURL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>CURLOPT_PROGRESSFUNCTION</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.image">GD</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>IMG_FILTER_PIXELATE</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">JSON</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>JSON_ERROR_CTRL_CHAR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_DEPTH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_NONE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_STATE_MISMATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_SYNTAX</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_FORCE_OBJECT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_TAG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_AMP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_APOS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_QUOT</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.ldap">LDAP</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>LDAP_OPT_NETWORK_TIMEOUT</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.libxml">libxml</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>LIBXML_LOADED_VERSION </constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcre">PCRE</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>PREG_BAD_UTF8_OFFSET_ERROR</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcntl">PCNTL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>BUS_ADRALN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>BUS_ADRERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>BUS_OBJERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_CONTIUNED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_DUMPED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_EXITED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_KILLED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_STOPPED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_TRAPPED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTDIV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTINV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTOVF</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTRES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTSUB</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTUND</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_INTDIV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_INTOVF</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_BADSTK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_COPROC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLADR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLOPC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLOPN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLTRP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_PRVOPC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_PRVREG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_ERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_HUP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_IN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_MSG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_OUT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_PRI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SEGV_ACCERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SEGV_MAPERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_ASYNCIO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_KERNEL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_MESGQ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_NOINFO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_QUEUE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_SIGIO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_TIMER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_TKILL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_USER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SIG_BLOCK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SIG_SETMASK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SIG_UNBLOCK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>TRAP_BRKPT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>TRAP_TRACE</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.ini">
<title>Changes to INI file handling</title>
<simpara>
PHP 5.3.0 has significantly improved performance and parsing of INI files,
and adds several new syntax features.
</simpara>
<itemizedlist>
<listitem>
<simpara>
The standard &php.ini; files have been re-organized and renamed.
<literal>php.ini-development</literal> contains settings recommded
for use in development environments. <literal>php.ini-production</literal>
contains settings recommended for use in production environments.
</simpara>
</listitem>
<listitem>
<simpara>
There is now support for two special sections:
<literal>[PATH=/opt/httpd/www.example.com/]</literal> and
<literal>[HOST=www.example.com]</literal>. Directives set in these
sections cannot be overridden by user-defined INI files or at
runtime. More information about these sections can be found
<link linkend="ini.sections">here</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend-extension-debug">zend_extension_debug</link>,
<link linkend="ini.zend-extension-debug-ts">zend_extension_debug_ts</link>
and <link linkend="ini.zend-extension-ts">zend_extension_ts</link> have
been removed. Use the
<link linkend="ini.zend-extension">zend_extension</link> directive to
load all Zend Extensions.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link>
has been removed. If this INI directive is set to On, an
<constant>E_ERROR</constant> error is emitted at startup.
</simpara>
</listitem>
<listitem>
<simpara>
It is now possible to use the full path to load modules using the
<link linkend="ini.extension">extension</link> directive.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>"ini-variables"</literal> can now be used almost anywhere in a
&php.ini; file.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.open-basedir">open_basedir</link> restrictions may now
be tighted at runtime, and the directive is now PHP_INI_ALL.
</simpara>
</listitem>
<listitem>
<simpara>
It is now possible to use alphanumeric or variable indices in INI option
arrays.
</simpara>
</listitem>
<listitem>
<simpara>
<function>get_cfg_var</function> is now able to return "array" INI options.
</simpara>
</listitem>
<listitem>
<simpara>
Two new mail directives:
<link linkend="ini.mail.add-x-header">mail.add_x_header</link> and
<link linkend="ini.mail.log">mail.log</link>, have been added.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following new ini directives have been added:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<literal>user_ini.filename</literal> and
<literal>user_ini.cache_ttl</literal> have been added to control the use
of <link linkend="configuration.file.per-user">user INI files</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.exit-on-timeout">exit_on_timeout</link> has been added
to force Apache 1.x children to exit if a PHP execution timeout occurs.
</simpara>
</listitem>
<listitem>
<simpara>
Added <literal>mbstring.http_output_conv_mimetype</literal>.
This directive specifies the regex pattern of content types for which
<function>mb_output_handler</function> is activated.
</simpara>
</listitem>
<listitem>
<simpara>
Added <link linkend="ini.request-order">request_order</link>.
Allows controlling which external variables will be available in
<varname>$_REQUEST</varname>.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following ini directives have new default values:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.session.use-only-cookies">session.use_only_cookies</link>
is now set to <literal>"1"</literal> (enabled) by default.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.oci8.default-prefetch">oci8.default_prefetch</link>
has changed from <literal>"10"</literal> to <literal>"100"</literal>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.other">
<title>Other changes</title>
<itemizedlist>
<listitem>
<simpara>
<function>SplFileInfo::getpathinfo</function> now returns information about
the path name.
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplObjectStorage</classname> now has
<classname>ArrayAccess</classname> support. It is now also possible to
store associative information with objects in
<classname>SplObjectStorage</classname>.
</simpara>
</listitem>
<listitem>
<simpara>
In the GD extension, there is now pixelation support available through
the <function>imagefilter</function> function.
</simpara>
</listitem>
<listitem>
<simpara>
<function>var_dump</function> output now includes private object properties.
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_start</function> now returns &false; when session startup
fails.
</simpara>
</listitem>
<listitem>
<simpara>
<function>property_exists</function> now checks the existence of a property
independent of accessibility (like <function>method_exists</function>).
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="wrappers">Stream wrappers</link> can now be used by
<link linkend="ini.include-path">include_path</link>.
</simpara>
</listitem>
<listitem>
<simpara>
The <parameter>initial</parameter> parameter for
<function>array_reduce</function> can now be of any type.
</simpara>
</listitem>
<listitem>
<simpara>
The <link linkend="ref.dir">directory functions</link>
<function>opendir</function>, <function>scandir</function>, and
<function>dir</function> now use the default stream context if no explicit
context is passed.
</simpara>
</listitem>
<listitem>
<simpara>
<function>crypt</function> now has Blowfish and extended DES support, and
<function>crypt</function> features are now 100% portable. PHP has its own
internal crypt implementation which drops into place when support for
<literal>crypt</literal> or <literal>crypt_r</literal> is not found.
</simpara>
</listitem>
<listitem>
<simpara>
<function>getopt</function> now accepts "long options" on all platforms.
Optional values and <literal>=</literal> as a separator for short options
are now supported.
</simpara>
</listitem>
<listitem>
<simpara>
<function>fopen</function> has a new mode option (<literal>n</literal>),
which passes <constant>O_NONBLOCK</constant> to the underlying
<literal>open()</literal> system call. Note that this mode is not currently
supported on Windows.
</simpara>
</listitem>
<listitem>
<simpara>
<function>getimagesize</function> now supports icon files (.ico).
</simpara>
</listitem>
<listitem>
<simpara>
The mhash extension have moved to PECL, but the
<link linkend="ref.hash">Hash</link> extension have been modified to support
mhash if PHP is compiled with <literal>--with-mhash</literal>. Note that the
Hash extension does not require the mhash library to be available whether or
not the mhash emulation is enabled.
</simpara>
</listitem>
</itemizedlist>
</section>
</appendix>
<!-- 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
-->