Contributions are ready for review

From: Date: Mon, 01 Apr 2019 12:00:04 +0000
Subject: Contributions are ready for review
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969387200@lists.php.net to get a copy of this message
Hello PHP EN Documentation team, There are contributions within the online editor queue for this language. Please review, then commit or delete these patches. Patches for review : ----------------------- Modified: en/reference/memcached/ini.xml By: Julien Boulen on 2018-08-23 06:08:26 =================================================================== --- en/reference/memcached/ini.xml +++ en/reference/memcached/ini.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 330930 $ --> +<!-- $Revision: 330931 $ --> +<!-- Reviewed: No --> <section xml:id="memcached.configuration" xmlns="http://docbook.org/ns/docbook"> &reftitle.runtime; @@ -23,76 +24,179 @@ <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> - <entry><link linkend="ini.memcached.sess-consistent-hash">memcached.sess_consistent_hash</link></entry> - <entry>0</entry> + <entry><link linkend="ini.memcached.sess-lock-wait-min">memcached.sess_lock_wait_min</link></entry> + <entry>150</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> - <entry><link linkend="ini.memcached.sess-binary">memcached.sess_binary</link></entry> - <entry>0</entry> + <entry><link linkend="ini.memcached.sess-lock-wait-max">memcached.sess_lock_wait_max</link></entry> + <entry>150</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + + <row> + <entry><link linkend="ini.memcached.sess-lock-retries">memcached.sess_lock_retries</link></entry> + <entry>200</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + <row> - <entry><link linkend="ini.memcached.sess-lock-wait">memcached.sess_lock_wait</link></entry> - <entry>150000</entry> + <entry><link linkend="ini.memcached.sess-lock-expire">memcached.sess_lock_expire</link></entry> + <entry>0</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> <entry><link linkend="ini.memcached.sess-prefix">memcached.sess_prefix</link></entry> <entry>memc.sess.key.</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + + <row> + <entry><link linkend="ini.memcached.sess-persistent">memcached.sess_persistent</link></entry> + <entry>Off</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.sess-consistent-hash">memcached.sess_consistent_hash</link></entry> + <entry>On</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.sess-consistent-hash-type">memcached.sess_consistent_hash_type</link></entry> + <entry>ketama</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.sess-remove-failed-servers">memcached.sess_remove_failed_servers</link></entry> + <entry>Off</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.sess-server-failure-limit">memcached.sess_server_failure_limit</link></entry> + <entry>0</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + <row> <entry><link linkend="ini.memcached.sess-number-of-replicas">memcached.sess_number_of_replicas</link></entry> <entry>0</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + + <row> + <entry><link linkend="ini.memcached.sess-binary-protocol">memcached.sess_binary_protocol</link></entry> + <entry>On</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + <row> <entry><link linkend="ini.memcached.sess-randomize-replica-read">memcached.sess_randomize_replica_read</link></entry> - <entry>0</entry> + <entry>Off</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + + <row> + <entry><link linkend="ini.memcached.sess-connect-timeout">memcached.sess_connect_timeout</link></entry> + <entry>1000</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.sess-sasl-username">memcached.sess_sasl_username</link></entry> + <entry>null</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.sess-sasl-password">memcached.sess_sasl_password</link></entry> + <entry>null</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + <row> <entry><link linkend="ini.memcached.sess-remove-failed">memcached.sess_remove_failed</link></entry> <entry>0</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> <entry><link linkend="ini.memcached.compression-type">memcached.compression_type</link></entry> <entry>fastlz</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> <entry><link linkend="ini.memcached.compression-factor">memcached.compression_factor</link></entry> <entry>1.3</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> <entry><link linkend="ini.memcached.compression-threshold">memcached.compression_threshold</link></entry> <entry>2000</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> <entry><link linkend="ini.memcached.serializer">memcached.serializer</link></entry> - <entry>php</entry> + <entry>igbinary</entry> <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> + <row> - <entry><link linkend="ini.memcached.use-sasl">memcached.use_sasl</link></entry> + <entry><link linkend="ini.memcached.store-retry-count">memcached.store_retry_count</link></entry> + <entry>2</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.default-consistent-hash">memcached.default_consistent_hash</link></entry> + <entry>Off</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.default-binary-protocol">memcached.default_binary_protocol</link></entry> + <entry>Off</entry> + <entry>PHP_INI_ALL</entry> + <entry><!-- leave empty, this will be filled by an automatic script --></entry> + </row> + + <row> + <entry><link linkend="ini.memcached.default-connect-timeout">memcached.default_connect_timeout</link></entry> <entry>0</entry> - <entry>PHP_INI_SYSTEM</entry> + <entry>PHP_INI_ALL</entry> <entry><!-- leave empty, this will be filled by an automatic script --></entry> </row> </tbody> @@ -104,217 +208,360 @@ <para> <variablelist> - <varlistentry xml:id="ini.memcached.sess-locking"> - <term> - <parameter>memcached.sess_locking</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Use session locking. Valid values: On, Off, the default is On. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-consistent-hash"> - <term> - <parameter>memcached.sess_consistent_hash</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Memcached session consistent hash mode. If set to On, consistent - hashing is used for session handling. When consistent hashing is used, - one can add or remove cache node(s) without messing up too much with - existing keys. The default is Off. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-binary"> - <term> - <parameter>memcached.sess_binary</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Use memcached session binary mode. Libmemcached replicas only work if - binary mode is enabled. The default is Off. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-lock-wait"> - <term> - <parameter>memcached.sess_lock_wait</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Session spin lock retry wait time in microseconds. Be carefull when - setting this value. Valid values are integers, where 0 is interpreted - as the default value. Negative values result in a reduces locking to a - try lock. The default is 150000. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-prefix"> - <term> - <parameter>memcached.sess_prefix</parameter> - <type>string</type> - </term> - <listitem> - <para> - Memcached session key prefix. Valid values are strings less than 219 - bytes long. The default value is "memc.sess.key." - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-number-of-replicas"> - <term> - <parameter>memcached.sess_number_of_replicas</parameter> - <type>integer</type> - </term> - <listitem> - <para> - The memcached session number of replicas. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-randomize-replica-read"> - <term> - <parameter>memcached.sess_randomize_replica_read</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Memcached session replica read randomize. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.sess-remove-failed"> - <term> - <parameter>memcached.sess_remove_failed</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Allow failed memcached server to automatically be removed. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.compression-type"> - <term> - <parameter>memcached.compression_type</parameter> - <type>string</type> - </term> - <listitem> - <para> - Set the compression type, valid values are: fastlz, zlib. The default - is fastlz. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.compression-factor"> - <term> - <parameter>memcached.compression_factor</parameter> - <type>float</type> - </term> - <listitem> - <para> - Compression factor. Store compressed value only if the compression - factor (saving) exceeds the set limit. Store compressed if: - <literal>plain_len &gt; comp_len * factor</literal>. The default value - is 1.3 (23% space saving). - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.compression-threshold"> - <term> - <parameter>memcached.compression_threshold</parameter> - <type>integer</type> - </term> - <listitem> - <para> - The compression threshold. Do not compress serialized values below this - threshold. The default is 2000 bytes. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.serializer"> - <term> - <parameter>memcached.serializer</parameter> - <type>string</type> - </term> - <listitem> - <para> - Set the default serializer for new memcached objects. Valid values - are: php, igbinary, json, json_array. - </para> - <variablelist> - <varlistentry> - <term>json</term> - <listitem> - <para> - Standard php JSON encoding. This serializer is fast and compact but - only works on UTF-8 encoded data and does not fully implement - serializing. See the JSON extension. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>json_array</term> - <listitem> - <para> - As json, but decodes into arrays. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>php</term> - <listitem> - <para> - The standard PHP serializer. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>igbinary</term> - <listitem> - <para> - A binary serializer - </para> - </listitem> - </varlistentry> - </variablelist> - <para> - The default is igbinary if available and php otherwise. - </para> - </listitem> - </varlistentry> - - <varlistentry xml:id="ini.memcached.use-sasl"> - <term> - <parameter>memcached.use_sasl</parameter> - <type>integer</type> - </term> - <listitem> - <para> - Use SASL authentication for connections. Valid values: On, Off. The - default is Off. - </para> - </listitem> - </varlistentry> - + <term> + <parameter>memcached.sess_locking</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Use session locking. Valid values: On, Off, the default is On. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-lock-wait-min"> + <term> + <parameter>memcached.sess_lock_wait_min</parameter> + <type>integer</type> + </term> + <listitem> + <para> + The minimum time, in milliseconds, to wait between session lock attempts. This value is double on each lock retry until memcached.sess_lock_wait_max is reached, after which any further retries will take sess_lock_wait_max seconds. The default is 150. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-lock-wait-max"> + <term> + <parameter>memcached.sess_lock_wait_max</parameter> + <type>integer</type> + </term> + <listitem> + <para> + The maximum time, in milliseconds, to wait between session lock attempts. The default is 150. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-lock-retries"> + <term> + <parameter>memcached.sess_lock_retries</parameter> + <type>integer</type> + </term> + <listitem> + <para> + The number of times to retry locking the session lock, not including the first attempt. Default is 200. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-lock-expire"> + <term> + <parameter>memcached.sess_lock_retries</parameter> + <type>integer</type> + </term> + <listitem> + <para> + The time, in seconds, before a lock should release itself. Setting to 0 results in the default behaviour, which is to use PHP's max_execution_time. Default is 0. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-prefix"> + <term> + <parameter>memcached.sess_prefix</parameter> + <type>string</type> + </term> + <listitem> + <para> + Memcached session key prefix. Valid values are strings less than 219 + bytes long. The default value is "memc.sess.key." + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-persistent"> + <term> + <parameter>memcached.sess_persistent</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Whether or not to re-use the memcached connections corresponding to the value(s) of session.save_path after the execution of the script ends. Don't use this if certain settings (e.g. SASL settings, sess_binary_protocol) would be overridden between requests. Default is Off. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-consistent-hash"> + <term> + <parameter>memcached.sess_consistent_hash</parameter> + <type>integer</type> + </term> + <listitem> + <para> + If set to On, consistent hashing (libketama) is used for session handling. When consistent hashing is used, one can add or remove cache node(s) without messing up too much with existing keys. Default is On. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-consistent-hash-type"> + <term> + <parameter>memcached.sess_consistent_hash_type</parameter> + <type>string</type> + </term> + <listitem> + <para> + Memcached session consistent hash type if set to 'ketama', consistent hashing (libketama) is used for session handling (default for php-memcached 3.x) if set to 'ketama_weighted', weighted consistent hashing (libketama) is used for session handling (default for php-memcached 2.x). Default is "ketama". + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-remove-failed-servers"> + <term> + <parameter>memcached.sess_remove_failed_servers</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Allow failed memcached server to automatically be removed. Default is Off. (In previous versions, this setting was called memcached.sess_remove_failed). + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-server-failure-limit"> + <term> + <parameter>memcached.sess_server_failure_limit</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Set this value to enable the server be removed after configured number of continuous times connection failure. Default is 0. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-number-of-replicas"> + <term> + <parameter>memcached.sess_number_of_replicas</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Write data to a number of additional memcached servers. This is "poor man's HA" as libmemcached calls it. If this value is positive and sess_remove_failed is enabled when a memcached server fails the session will continue to be available from a replica. However, if the failed memcache server becomes available again it will read the session from there which could have old data or no data at all. Default is 0. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-binary-protocol"> + <term> + <parameter>memcached.sess_binary_protocol</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Use the memcached binary protocol for memcached sessions (Instead of the text protocol) libmemcached replicas work only if binary mode is enabled. However, certain proxies (such as twemproxy) will work only if the binary protocol is disabled. In older versions of php-memcached, this setting was Off and was called memcached.sess_binary. Default is On with libmemcached 1.0.18 or newer. Default is Off with older version. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-randomize-replica-read"> + <term> + <parameter>memcached.sess_randomize_replica_read</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Memcached session replica read randomize. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-connect-timeout"> + <term> + <parameter>memcached.sess_connect_timeout</parameter> + <type>integer</type> + </term> + <listitem> + <para> + memcached connect timeout value + In non-blocking mode this changes the value of the timeout during socket connection in milliseconds. Specifying -1 means an infinite timeout. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-sasl-username"> + <term> + <parameter>memcached.sess_sasl_username</parameter> + <type>string</type> + </term> + <listitem> + <para> + Session SASL username + Both username and password need to be set for SASL to be enabled In addition to this memcached.use_sasl needs to be on + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.sess-sasl-password"> + <term> + <parameter>memcached.sess_sasl_password</parameter> + <type>string</type> + </term> + <listitem> + <para> + Session SASL password + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.compression-type"> + <term> + <parameter>memcached.compression_type</parameter> + <type>string</type> + </term> + <listitem> + <para> + Set the compression type, valid values are: fastlz, zlib. The default + is fastlz. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.compression-factor"> + <term> + <parameter>memcached.compression_factor</parameter> + <type>float</type> + </term> + <listitem> + <para> + Compression factor. Store compressed value only if the compression + factor (saving) exceeds the set limit. Store compressed if: + <literal>plain_len &gt; comp_len * factor</literal>. The default value + is 1.3 (23% space saving). + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.compression-threshold"> + <term> + <parameter>memcached.compression_threshold</parameter> + <type>integer</type> + </term> + <listitem> + <para> + The compression threshold. Do not compress serialized values below this + threshold. The default is 2000 bytes. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.serializer"> + <term> + <parameter>memcached.serializer</parameter> + <type>string</type> + </term> + <listitem> + <para> + Set the default serializer for new memcached objects. Valid values + are: php, igbinary, json, json_array. + </para> + <variablelist> + <varlistentry> + <term>json</term> + <listitem> + <para> + Standard php JSON encoding. This serializer is fast and compact but + only works on UTF-8 encoded data and does not fully implement + serializing. See the JSON extension. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>json_array</term> + <listitem> + <para> + As json, but decodes into arrays. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>php</term> + <listitem> + <para> + The standard PHP serializer. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>igbinary</term> + <listitem> + <para> + A binary serializer + </para> + </listitem> + </varlistentry> + </variablelist> + <para> + The default is igbinary if available and php otherwise. + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.store-retry-count"> + <term> + <parameter>memcached.store_retry_count</parameter> + <type>integer</type> + </term> + <listitem> + <para> + The amount of retries for failed store commands. + This mechanism allows transparent fail-over to secondary servers when set/increment/decrement/setMulti operations fail on the desired server in a multi-server environment. the default is 2 + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.default-consistent-hash"> + <term> + <parameter>memcached.default_consistent_hash</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Sets the default for consistent hashing for new connections. (To configure consistent hashing for session connections, use memcached.sess_consistent_hash instead) + + If set to On, consistent hashing (libketama) is used for session handling. When consistent hashing is used, one can add or remove cache node(s) without messing up too much with existing keys default is Off + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.default-binary-protocol"> + <term> + <parameter>memcached.default_binary_protocol</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Sets the default memcached protocol for new connections. (To configure the memcached protocol for connections used by sessions, use memcached.sess_binary_protocol instead) + + If set to On, the memcached binary protocol is used by default. If set to Off, the memcached text protocol is used. Default is Off + </para> + </listitem> + </varlistentry> + + <varlistentry xml:id="ini.memcached.default-connect-timeout"> + <term> + <parameter>memcached.default_connect_timeout</parameter> + <type>integer</type> + </term> + <listitem> + <para> + Sets the default memcached connection timeout for new connections. (To configure the memcached connection timeout for sessions, use memcached.sess_connect_timeout instead) + + In non-blocking mode this changes the value of the timeout. during socket connection in milliseconds. Specifying -1 means an infinite timeout. Specifying 0 means using the memcached library's default connection timeout. Default is 0. + </para> + </listitem> + </varlistentry> </variablelist> </para> </section> @@ -338,4 +585,4 @@ vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 ---> +--> No newline at end of file => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=85064 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=85064 ------------------------------------------------------------------ Modified: en/reference/ldap/functions/ldap-connect.xml By: heiglandreas on 2018-11-21 10:03:14 =================================================================== --- en/reference/ldap/functions/ldap-connect.xml +++ en/reference/ldap/functions/ldap-connect.xml @@ -31,11 +31,10 @@ <para> <variablelist> <varlistentry> - <term><parameter>host</parameter></term> + <term><parameter>LDAP-URI</parameter></term> <listitem> <para> - This field supports using a hostname or, with OpenLDAP 2.x.x and - later, a full LDAP URI of the form <literal>ldap://hostname:port</literal> + A full LDAP URI of the form <literal>ldap://hostname:port</literal> or <literal>ldaps://hostname:port</literal> for SSL encryption. </para> <para> @@ -44,34 +43,28 @@ <para> Note that <literal>hostname:port</literal> is not a supported LDAP URI as the schema is missing. </para> - </listitem> - </varlistentry> - <varlistentry> - <term><parameter>port</parameter></term> - <listitem> - <para> - The port to connect to. Not used when using LDAP URIs. - </para> + <para>For backwards compatibility this field supports using a single hostname or IP-address</para> </listitem> </varlistentry> </variablelist> </para> + <para>Note that this function also still supports passing a host (or IP) and a port as 2 separate parameters. This is merely for backwards compatibility and is considered deprecated and should not be used anymore!</para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> - Returns a positive LDAP link identifier when the provided hostname/port combination or LDAP URI - seems plausible. It's a syntactic check of the provided parameters but the server(s) will not + Returns a positive LDAP link identifier when the provided LDAP URI + seems plausible. It's a syntactic check of the provided parameter but the server(s) will not be contacted! If the syntactic check fails it returns &false;. - When OpenLDAP 2.x.x is used, <function>ldap_connect</function> will always + <function>ldap_connect</function> will otherwise return a <type>resource</type> as it does not actually connect but just initializes the connecting parameters. The actual connect happens with the next calls to ldap_* funcs, usually with <function>ldap_bind</function>. </para> <para> - If no arguments are specified then the link identifier of the already + If no argument is specified then the link identifier of the already opened link will be returned. </para> </refsect1> @@ -86,12 +79,11 @@ <?php // LDAP variables -$ldaphost = "ldap.example.com"; // your ldap servers -$ldapport = 389; // your ldap server's port number +$ldapuri = "ldap://ldap.example.com:389"; // your ldap-uri // Connecting to LDAP -$ldapconn = ldap_connect($ldaphost, $ldapport) - or die("Could not connect to $ldaphost"); +$ldapconn = ldap_connect($ldapuri) + or die("That LDAP-URI was not parseable"); ?> ]]> @@ -109,7 +101,7 @@ // Connecting to LDAP $ldapconn = ldap_connect($ldaphost) - or die("Could not connect to {$ldaphost}"); + or die("That LDAP-URI was not parseable"); ?> ]]> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=86812 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=86812 ------------------------------------------------------------------ Modified: en/reference/array/functions/array-splice.xml By: girgias on 2018-12-28 11:39:52 =================================================================== --- en/reference/array/functions/array-splice.xml +++ en/reference/array/functions/array-splice.xml @@ -48,10 +48,13 @@ <term><parameter>offset</parameter></term> <listitem> <para> - If <parameter>offset</parameter> is positive then the start of removed - portion is at that offset from the beginning of the - <parameter>input</parameter> array. If <parameter>offset</parameter> - is negative then it starts that far from the end of the + If <parameter>offset</parameter> is positive then the start of the + removed portion is at that offset from the beginning of the + <parameter>input</parameter> array. + </para> + <para> + If <parameter>offset</parameter> is negative then the start of the + removed portion is at that offset from the end of the <parameter>input</parameter> array. </para> </listitem> @@ -61,18 +64,25 @@ <listitem> <para> If <parameter>length</parameter> is omitted, removes everything - from <parameter>offset</parameter> to the end of the array. If - <parameter>length</parameter> is specified and is positive, then - that many elements will be removed. If - <parameter>length</parameter> is specified and is negative then - the end of the removed portion will be that many elements from - the end of the array. If <parameter>length</parameter> is - specified and is zero, no elements will be removed. - Tip: to remove everything from - <parameter>offset</parameter> to the end of the array when - <parameter>replacement</parameter> is also specified, use - <literal>count($input)</literal> for - <parameter>length</parameter>. + from <parameter>offset</parameter> to the end of the array. + </para> + <para> + If <parameter>length</parameter> is specified and is positive, + then that many elements will be removed. + </para> + <para> + If <parameter>length</parameter> is specified and is negative, + then the end of the removed portion will be that many elements + from the end of the array. + </para> + <para> + If <parameter>length</parameter> is specified and is zero, + no elements will be removed. + </para> + <para> + Tip: to remove everything from <parameter>offset</parameter> to the end + of the array when <parameter>replacement</parameter> is also specified, + use <literal>count($input)</literal> for <parameter>length</parameter>. </para> </listitem> </varlistentry> @@ -87,12 +97,15 @@ If <parameter>offset</parameter> and <parameter>length</parameter> are such that nothing is removed, then the elements from the <parameter>replacement</parameter> array are inserted in the place - specified by the <parameter>offset</parameter>. Note that keys in - replacement array are not preserved. + specified by the <parameter>offset</parameter>. + </para> + <para> + Note that the keys in the <parameter>replacement</parameter> array + are not preserved. </para> <para> If <parameter>replacement</parameter> is just one element it is - not necessary to put <literal>array()</literal> + not necessary to put <literal>array()</literal> or square brackets around it, unless the element is an array itself, an object or &null;. </para> </listitem> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=88553 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=88553 ------------------------------------------------------------------ Modified: en/reference/array/functions/array-slice.xml By: girgias on 2018-12-28 11:53:17 =================================================================== --- en/reference/array/functions/array-slice.xml +++ en/reference/array/functions/array-slice.xml @@ -38,9 +38,13 @@ <listitem> <para> If <parameter>offset</parameter> is non-negative, the sequence will - start at that offset in the <parameter>array</parameter>. If - <parameter>offset</parameter> is negative, the sequence will + start at that offset in the <parameter>array</parameter>. + </para> + <para> + If <parameter>offset</parameter> is negative, the sequence will start that far from the end of the <parameter>array</parameter>. + </para> + <para> Note that the <parameter>offset</parameter> denotes the position in the array, not the key. </para> @@ -50,13 +54,19 @@ <term><parameter>length</parameter></term> <listitem> <para> - If <parameter>length</parameter> is given and is positive, then - the sequence will have up to that many elements in it. If the array - is shorter than the <parameter>length</parameter>, then only the - available array elements will be present. If - <parameter>length</parameter> is given and is negative then the - sequence will stop that many elements from the end of the - array. If it is omitted, then the sequence will have everything + If <parameter>length</parameter> is given and is positive, + then the sequence will have up to that many elements in it. + </para> + <para> + If the array is shorter than the <parameter>length</parameter>, + then only the available array elements will be present. + </para> + <para> + If <parameter>length</parameter> is given and is negative then the + sequence will stop that many elements from the end of the array. + </para> + <para> + If it is omitted, then the sequence will have everything from <parameter>offset</parameter> up until the end of the <parameter>array</parameter>. </para> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=88554 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=88554 ------------------------------------------------------------------ Modified: en/reference/spl/functions/iterator-to-array.xml By: Joel Wurtz on 2019-01-09 08:31:37 =================================================================== --- en/reference/spl/functions/iterator-to-array.xml +++ en/reference/spl/functions/iterator-to-array.xml @@ -138,6 +138,44 @@ ]]> </screen> </example> + <example> + <title><function>iterator_to_array</function> with Generator example</title> + <programlisting role="php"> +<![CDATA[ +<?php + +function yield1() { + yield 'foo'; +} + +function yield2() { + yield 'bar'; + + yield from yield1(); +} + +var_dump(iterator_to_array(yield2(), false)); +var_dump(iterator_to_array(yield2(), true)); + +?> +]]> + </programlisting> + &example.outputs; + <screen> +<![CDATA[ +array(2) { + [0]=> + string(3) "bar" + [1]=> + string(3) "foo" +} +array(1) { + [0]=> + string(3) "foo" +} +]]> + </screen> + </example> </para> </refsect1> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89165 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89165 ------------------------------------------------------------------ Modified: en/reference/array/functions/in-array.xml By: girgias on 2019-01-11 06:46:22 =================================================================== --- en/reference/array/functions/in-array.xml +++ en/reference/array/functions/in-array.xml @@ -14,7 +14,7 @@ <methodparam choice="opt"><type>bool</type><parameter>strict</parameter><initializer>&false;</initializer></methodparam> </methodsynopsis> <para> - Searches <parameter>haystack</parameter> for <parameter>needle</parameter> using loose comparison + Searches for <parameter>needle</parameter> in <parameter>haystack</parameter> using loose comparison unless <parameter>strict</parameter> is set. </para> </refsect1> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89214 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89214 ------------------------------------------------------------------ Modified: en/reference/array/functions/array-search.xml By: girgias on 2019-01-11 06:51:30 =================================================================== --- en/reference/array/functions/array-search.xml +++ en/reference/array/functions/array-search.xml @@ -14,7 +14,7 @@ <methodparam choice="opt"><type>bool</type><parameter>strict</parameter><initializer>&false;</initializer></methodparam> </methodsynopsis> <para> - Searches <parameter>haystack</parameter> for <parameter>needle</parameter>. + Searches for <parameter>needle</parameter> in <parameter>haystack</parameter>. </para> </refsect1> <refsect1 role="parameters"> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89215 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89215 ------------------------------------------------------------------ Modified: en/reference/openssl/functions/openssl-encrypt.xml By: anonymous on 2019-01-13 05:08:52 =================================================================== --- en/reference/openssl/functions/openssl-encrypt.xml +++ en/reference/openssl/functions/openssl-encrypt.xml @@ -187,22 +187,23 @@ $ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC"); $iv = openssl_random_pseudo_bytes($ivlen); $ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv); -$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true); -$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw ); - -//decrypt later.... +$hmac = hash_hmac('sha256', $iv.$ciphertext_raw, $key, $as_binary=true); +$ciphertext = base64_encode( $iv.$ciphertext_raw.$hmac ); +//decrypt later... +$sha2len = 32; $c = base64_decode($ciphertext); -$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC"); -$iv = substr($c, 0, $ivlen); -$hmac = substr($c, $ivlen, $sha2len=32); -$ciphertext_raw = substr($c, $ivlen+$sha2len); -$original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv); -$calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true); +$hmac = substr($c, -1*$sha2len); +$hmac_input = substr($c, 0, -1*$sha2len); +$calcmac = hash_hmac('sha256', $hmac_input, $key, $as_binary=true); if (hash_equals($hmac, $calcmac))//PHP 5.6+ timing attack safe comparison { + $ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC"); + $iv = substr($c, 0, $ivlen); + $ciphertext_raw = substr($c, $ivlen, -1*$sha2len); + $original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv); echo $original_plaintext."n"; } -?> + ]]> </programlisting> </example> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89229 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89229 ------------------------------------------------------------------ Modified: en/reference/mbstring/functions/mb-strlen.xml By: anonymous on 2019-02-07 20:14:43 =================================================================== --- en/reference/mbstring/functions/mb-strlen.xml +++ en/reference/mbstring/functions/mb-strlen.xml @@ -48,10 +48,14 @@ <parameter>encoding</parameter>. A multi-byte character is counted as 1. </para> + </refsect1> + + <refsect1 role="errors"> + &reftitle.errors; <para> - Returns &false; if the given <parameter>encoding</parameter> is invalid. + If the encoding is unknown, an error of level + <constant>E_WARNING</constant> is generated. </para> - &return.falseproblem; </refsect1> <refsect1 role="seealso"> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89599 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89599 ------------------------------------------------------------------ Modified: en/reference/array/functions/array-map.xml By: girgias on 2019-02-12 14:57:21 =================================================================== --- en/reference/array/functions/array-map.xml +++ en/reference/array/functions/array-map.xml @@ -15,13 +15,14 @@ <methodparam choice="opt"><type>array</type><parameter>...</parameter></methodparam> </methodsynopsis> <para> - <function>array_map</function> returns an array containing all - the elements of <parameter>array1</parameter> after applying the - <parameter>callback</parameter> function to each one. + <function>array_map</function> returns an array containing + the results of applying the <parameter>callback</parameter> + function to the corresponding index of <parameter>array1</parameter> + (and <parameter>...</parameter> if more arrays are provided) + used as arguments for the callback. The number of parameters that the <parameter>callback</parameter> - function accepts - should match the number of arrays - passed to the <function>array_map</function> + function accepts should match the number of arrays + passed to <function>array_map</function>. </para> </refsect1> @@ -49,7 +50,7 @@ <term><parameter>...</parameter></term> <listitem> <para> - Variable list of array arguments to run through the + Supplementary variable list of array arguments to run through the <parameter>callback</parameter> function. </para> </listitem> @@ -61,8 +62,10 @@ <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> - Returns an array containing all the elements of <parameter>array1</parameter> - after applying the <parameter>callback</parameter> function to each one. + Returns an array containing the results of applying the <parameter>callback</parameter> + function to the corresponding index of <parameter>array1</parameter> + (and <parameter>...</parameter> if more arrays are provided) + used as arguments for the callback. </para> </refsect1> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89216 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89216 ------------------------------------------------------------------ Modified: en/reference/reflection/reflectionclass/getmodifiers.xml By: Florian Berberich on 2019-02-17 03:35:34 =================================================================== --- en/reference/reflection/reflectionclass/getmodifiers.xml +++ en/reference/reflection/reflectionclass/getmodifiers.xml @@ -31,12 +31,113 @@ modifier constants</link>. </para> </refsect1> + + <refsect1 role="changelog"> + &reftitle.changelog; + <para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>7.2.0</entry> + <entry> + The returned bitfield now only consists on the value of the + <link linkend="reflectionclass.constants.modifiers">modifier constants.</link> + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + </refsect1> + + <refsect1 role="examples"> + &reftitle.examples; + <para> + <example> + <title><methodname>ReflectionClass::getModifiers</methodname> example</title> + <programlisting role="php"> +<![CDATA[ +<?php + +trait Trait1 { + +} + +trait Trait2 { + abstract function abstract1(); +} + +interface Interface1 { + +} + +interface Interface2 { + function abstract2(); +} + +abstract class Abstract1 { + +} + +abstract class Abstract2 { + abstract function abstract3(); +} + +class Class1 { + +} + +final class Class2 { + +} + +$refTrait1 = new ReflectionClass('Trait1'); +$refTrait2 = new ReflectionClass('Trait2'); // implicit abstract +$refInterface1 = new ReflectionClass('Interface1'); +$refInterface2 = new ReflectionClass('Interface2'); // implicit abstract +$refAbstract1 = new ReflectionClass('Abstract1'); // explicit abstract +$refAbstract2 = new ReflectionClass('Abstract2'); // implicit and explicit abstract +$refClass1 = new ReflectionClass('Class1'); +$refClass2 = new ReflectionClass('Class2'); // final + +var_dump($refTrait1->getModifiers()); +var_dump($refTrait2->getModifiers()); +var_dump($refInterface1->getModifiers()); +var_dump($refInterface2->getModifiers()); +var_dump($refAbstract1->getModifiers()); +var_dump($refAbstract2->getModifiers()); +var_dump($refClass1->getModifiers()); +var_dump($refClass2->getModifiers()); +]]> + </programlisting> + &example.outputs; + <screen> +<![CDATA[ +int(0) +int(16) +int(0) +int(16) +int(32) +int(48) +int(0) +int(4) +]]> + </screen> + </example> + </para> + </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> - <member><methodname>ReflectionClass::getProperties</methodname></member> <member><methodname>Reflection::getModifierNames</methodname></member> </simplelist> </para> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89789 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89789 ------------------------------------------------------------------ Modified: en/reference/reflection/reflectionclass/isiterateable.xml By: Florian Berberich on 2019-02-17 03:36:25 =================================================================== --- en/reference/reflection/reflectionclass/isiterateable.xml +++ en/reference/reflection/reflectionclass/isiterateable.xml @@ -1,18 +1,126 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 346865 $ --> +<!-- $Revision: 294409 $ --> <refentry xml:id="reflectionclass.isiterateable" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>ReflectionClass::isIterateable</refname> - <refpurpose>&Alias; <methodname>ReflectionClass::isIterable</methodname></refpurpose> + <refpurpose>Checks if iterateable</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; - <para>&Alias; <methodname>ReflectionClass::isIterable</methodname></para> + <methodsynopsis> + <modifier>public</modifier> <type>bool</type><methodname>ReflectionClass::isIterateable</methodname> + <void /> + </methodsynopsis> <para> - As of PHP 7.2.0, instead of the missspelled <methodname>RefectionClass::isIterateable</methodname>, - <methodname>ReflectionClass::isIterable</methodname> should be preferred. + Checks whether the class implements the interface <interfacename>Traversable</interfacename>. + </para> + </refsect1> + + <refsect1 role="notes"> + &reftitle.notes; + <note> + <title>Alias of <methodname>ReflectionClass::isIterable</methodname></title> + <simpara> + Since PHP 7.2.0 this method is an alias of <methodname>ReflectionClass::isIterable</methodname>. + For the behavior of this method since PHP 7.2.0 visit + <linked link="reflectionclass.isiterable">ReflectionClass::isIterable</linked> + </simpara> + </note> + </refsect1> + + <refsect1 role="parameters"> + &reftitle.parameters; + &no.function.parameters; + </refsect1> + + <refsect1 role="returnvalues"> + &reftitle.returnvalues; + <para> + &return.success; + </para> + </refsect1> + + <refsect1 role="changelog"> + &reftitle.changelog; + <para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>7.2.0</entry> + <entry> + This method is now an alias of <linked link="reflectionclass.isiterable"> + ReflectionClass::isIterable</linked> + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + </refsect1> + + <refsect1 role="examples"> + &reftitle.examples; + <para> + <example> + <title><methodname>ReflectionClass::isIterateable</methodname> example</title> + <programlisting role="php"> +<![CDATA[ +<?php + +abstract class IteratorClass implements Iterator { + public function __construct() { } + public function key() { } + public function current() { } + function next() { } + function valid() { } + function rewind() { } +} +class DerivedClass extends IteratorClass { } +class NonIterator { } + +function dump_iterateable($class) { + $reflection = new ReflectionClass($class); + var_dump($reflection->isIterateable()); +} + +$classes = array("ArrayObject", "IteratorClass", "DerivedClass", "NonIterator"); + +foreach ($classes as $class) { + echo "Is $class iterateable? "; + dump_iterateable($class); +} +?> +]]> + </programlisting> + &example.outputs; + <screen> +<![CDATA[ +Is ArrayObject iterateable? bool(true) +Is IteratorClass iterateable? bool(true) +Is DerivedClass iterateable? bool(true) +Is NonIterator iterateable? bool(false) +]]> + </screen> + </example> + </para> + </refsect1> + + + <refsect1 role="seealso"> + &reftitle.seealso; + <para> + <simplelist> + <member><methodname>ReflectionClass::__construct</methodname></member> + </simplelist> </para> </refsect1> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89790 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89790 ------------------------------------------------------------------ Modified: en/reference/reflection/reflectionclass.xml By: Florian Berberich on 2019-02-17 03:37:49 =================================================================== --- en/reference/reflection/reflectionclass.xml +++ en/reference/reflection/reflectionclass.xml @@ -2,13 +2,13 @@ <!-- $Revision: 321705 $ --> <phpdoc:classref xml:id="class.reflectionclass" xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"> - + <title>The ReflectionClass class</title> <titleabbrev>ReflectionClass</titleabbrev> - + <partintro> - -<!-- {{{ ReflectionClass intro --> + + <!-- {{{ ReflectionClass intro --> <section xml:id="reflectionclass.intro"> &reftitle.intro; <para> @@ -16,16 +16,16 @@ information about a class. </para> </section> -<!-- }}} --> - + <!-- }}} --> + <section xml:id="reflectionclass.synopsis"> &reftitle.classsynopsis; - -<!-- {{{ Synopsis --> + + <!-- {{{ Synopsis --> <classsynopsis> <ooclass><classname>ReflectionClass</classname></ooclass> - -<!-- {{{ Class synopsis --> + + <!-- {{{ Class synopsis --> <classsynopsisinfo> <ooclass> <classname>ReflectionClass</classname> @@ -35,7 +35,7 @@ <interfacename>Reflector</interfacename> </oointerface> </classsynopsisinfo> -<!-- }}} --> + <!-- }}} --> <classsynopsisinfo role="comment">&Constants;</classsynopsisinfo> <fieldsynopsis> <modifier>const</modifier> @@ -53,25 +53,25 @@ <modifier>const</modifier> <type>integer</type> <varname linkend="reflectionclass.constants.is-final">ReflectionClass::IS_FINAL</varname> - <initializer>64</initializer> + <initializer>4</initializer> </fieldsynopsis> - + <classsynopsisinfo role="comment">&Properties;</classsynopsisinfo> <fieldsynopsis> <modifier>public</modifier> <varname linkend="reflectionclass.props.name">name</varname> </fieldsynopsis> - + <classsynopsisinfo role="comment">&Methods;</classsynopsisinfo> <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.reflectionclass')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" /> </classsynopsis> -<!-- }}} --> - + <!-- }}} --> + </section> - -<!-- {{{ ReflectionClass properties --> + + <!-- {{{ ReflectionClass properties --> <section xml:id="reflectionclass.props"> &reftitle.properties; <variablelist> @@ -86,36 +86,39 @@ </varlistentry> </variablelist> </section> -<!-- }}} --> - + <!-- }}} --> -<!-- {{{ ReflectionClass constants --> + + <!-- {{{ ReflectionClass constants --> <section xml:id="reflectionclass.constants"> &reftitle.constants; <section xml:id="reflectionclass.constants.modifiers"> <title>ReflectionClass Modifiers</title> <variablelist> - + <varlistentry xml:id="reflectionclass.constants.is-implicit-abstract"> <term><constant>ReflectionClass::IS_IMPLICIT_ABSTRACT</constant></term> <listitem> <para> - Indicates class that is <link linkend="language.oop5.abstract"> - abstract</link> because it has some abstract methods. + Indicates class is <link linkend="language.oop5.abstract"> + abstract</link> because it has some abstract methods. This may + also be true for interfaces and traits that containt abstract + methods. </para> </listitem> </varlistentry> - + <varlistentry xml:id="reflectionclass.constants.is-explicit-abstract"> <term><constant>ReflectionClass::IS_EXPLICIT_ABSTRACT</constant></term> <listitem> <para> - Indicates class that is <link linkend="language.oop5.abstract"> - abstract</link> because of its definition. + Indicates class is <link linkend="language.oop5.abstract"> + abstract</link> because of its definition. This is only true for + abstract classes. </para> </listitem> </varlistentry> - + <varlistentry xml:id="reflectionclass.constants.is-final"> <term><constant>ReflectionClass::IS_FINAL</constant></term> <listitem> @@ -125,17 +128,72 @@ </para> </listitem> </varlistentry> - + </variablelist> </section> </section> -<!-- }}} --> - - + <!-- }}} --> + + <section role="changelog" xml:id="reflectionclass.changelog"><!-- {{{ --> + &reftitle.changelog; + <para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>7.2.0</entry> + <entry> + Added method: <methodname>isIterable</methodname>. + <methodname>isIterateable</methodname> is now an alias of + the new method. + </entry> + </row> + <row> + <entry>7.1.0</entry> + <entry> + Added methods: <methodname>getReflectionConstant</methodname> + and <methodname>getReflectionConstants</methodname>. + </entry> + </row> + <row> + <entry>7.0.0</entry> + <entry> + The value of <constant>ReflectionClass::IS_FINAL</constant> + changed from 64 to 4. + </entry> + </row> + <row> + <entry>7.0.0</entry> + <entry> + Added method: <methodname>isAnonymous</methodname> + </entry> + </row> + <row> + <entry>5.4.0</entry> + <entry> + Added methods: <methodname>isCloneable</methodname>, + <methodname>newInstanceWithoutConstructor</methodname>, + <methodname>getTraits</methodname>, <methodname> + getTraitNames</methodname>, <methodname>getTraitAliases + </methodname> and <methodname>isTrait</methodname>. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + </section><!-- }}} --> + </partintro> - + &reference.reflection.entities.reflectionclass; - + </phpdoc:classref> <!-- Keep this comment at the end of the file => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89783 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89783 ------------------------------------------------------------------ Modified: en/reference/reflection/reflectionclass/isiterable.xml By: Florian Berberich on 2019-02-17 03:41:52 =================================================================== --- en/reference/reflection/reflectionclass/isiterable.xml +++ en/reference/reflection/reflectionclass/isiterable.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 346865 $ --> +<!-- $Revision: 344522 $ --> <refentry xml:id="reflectionclass.isiterable" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> @@ -14,7 +14,8 @@ <void /> </methodsynopsis> <para> - Check whether this class is iterable (i.e. can be used inside &foreach;). + Checks whether the class implements the interface <interfacename>Traversable</interfacename> + and is actually iterable. Therefore abstract classes are not iterable. </para> </refsect1> @@ -34,12 +35,12 @@ &reftitle.examples; <para> <example> - <title>Basic <methodname>ReflectionClass::isIterable</methodname> Usage</title> + <title><methodname>ReflectionClass::isIterable</methodname> example</title> <programlisting role="php"> <![CDATA[ <?php -class IteratorClass implements Iterator { +abstract class IteratorClass implements Iterator { public function __construct() { } public function key() { } public function current() { } @@ -50,16 +51,16 @@ class DerivedClass extends IteratorClass { } class NonIterator { } -function dump_iterable($class) { +function dump_iterateable($class) { $reflection = new ReflectionClass($class); - var_dump($reflection->isIterable()); + var_dump($reflection->isIterateable()); } $classes = array("ArrayObject", "IteratorClass", "DerivedClass", "NonIterator"); foreach ($classes as $class) { - echo "Is $class iterable? "; - dump_iterable($class); + echo "Is $class iterateable? "; + dump_iterateable($class); } ?> ]]> @@ -67,25 +68,15 @@ &example.outputs; <screen> <![CDATA[ -Is ArrayObject iterable? bool(true) -Is IteratorClass iterable? bool(true) -Is DerivedClass iterable? bool(true) -Is NonIterator iterable? bool(false) +Is ArrayObject iterateable? bool(true) +Is IteratorClass iterateable? bool(false) +Is DerivedClass iterateable? bool(true) +Is NonIterator iterateable? bool(false) ]]> </screen> </example> </para> </refsect1> - - <refsect1 role="seealso"> - &reftitle.seealso; - <para> - <simplelist> - <member><methodname>ReflectionClass::__construct</methodname></member> - </simplelist> - </para> - </refsect1> - </refentry> <!-- Keep this comment at the end of the file => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89791 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89791 ------------------------------------------------------------------ Modified: en/reference/strings/functions/strrpos.xml By: Florian Berberich on 2019-02-17 05:52:29 =================================================================== --- en/reference/strings/functions/strrpos.xml +++ en/reference/strings/functions/strrpos.xml @@ -41,10 +41,15 @@ <varlistentry> <term><parameter>offset</parameter></term> <listitem> + <para> + If specified and positive, the search will stop this number of characters + counted from the beginning of the string, starting at the string's last + character. + </para> <para> - If specified, search will start this number of characters counted from the - beginning of the string. If the value is negative, search will instead start - from that many characters from the end of the string, searching backwards. + If specified and negative, the search will start looking for the needle + at the given position from the end of the string, stopping at the + string's frist character. </para> </listitem> </varlistentry> @@ -56,8 +61,7 @@ &reftitle.returnvalues; <para> Returns the position where the needle exists relative to the beginning of - the <parameter>haystack</parameter> string (independent of search direction - or offset). + the <parameter>haystack</parameter> string (independent of the offset). Also note that string positions start at 0, and not 1. </para> <para> @@ -130,6 +134,12 @@ // string. Result: int(27) var_dump(strrpos($foo, '7', 28)); // Result: bool(false) + +var_dump(strrpos($foo, 'c', -2)); // Result: bool(false) as the needle can + // not start two characters from the right + +var_dump(strrpos($foo, '9c', -2)); // Result: int(29) as the needle starts + // two characters from the right ?> ]]> </programlisting> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89795 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89795 ------------------------------------------------------------------ Modified: en/reference/session/security.xml By: girgias on 2019-03-01 19:58:56 =================================================================== --- en/reference/session/security.xml +++ en/reference/session/security.xml @@ -7,9 +7,10 @@ External links: <link xlink:href="&url.session-fixation;">Session fixation</link> </para> <para> - HTTP session management is the core of web security. All mitigations - should be adopted to make sure sessions are secured. Developers should - also enable/use applicable security measures. + HTTP session management represents the core of web security. + All possible mitigation measures SHOULD be adopted to ensure + sessions are secured. + Developers should also enable/use applicable security measures. </para> <sect1 xml:id="features.session.security.management"> @@ -19,144 +20,148 @@ <title>Session Security</title> <para> - The session module cannot guarantee that the information you store - in a session is only viewed by the user who created the session. You - need to take additional measures to protect the confidentiality + The session module CANNOT guarantee that the information stored + in a session is only viewed by the user who created the session. + Additional measures are needed to protect the confidentiality of the session, depending on the value associated with it. </para> <para> - Assess the importance of the data carried by your sessions and - deploy additional protections -- this usually comes at a price, - reduced convenience for the user. For example, if you want to - protect users from simple social engineering tactics, you need to - enable <literal>session.use_only_cookies</literal>. In that case, - cookies must be enabled unconditionally on the user side, or - sessions will not work. + The importance of the data carried in the session needs to be + assessed and further protection MAY be deployed; this typically + comes at a price, such as reduced convenience for the user. + For example, to protect users from a simple social engineering + tactic, <literal>session.use_only_cookies</literal> + needs to be enabled. In that case, cookies must be enabled + unconditionally on the client side, or sessions will not work. </para> <para> There are several ways to leak an existing session ID to third - parties. e.g. JavaScript injections, session ID in URLs, packet - sniffing, physical access to device. A leaked session ID enables - the third party to access all resources which are associated with - a specific ID. First, URLs carrying session IDs. If you link to - an external site, the URL including the session ID might be - stored in the external site's referrer logs. Second, a more - active attacker might listen to your network traffic. If it is - not encrypted, session IDs will flow in plain text over the - network. The solution here is to implement SSL/TLS on your server - and make it mandatory for users. HSTS should be used for better - security. + parties. E.g. JavaScript injections, session IDs in URLs, + packet sniffing, physical access to the device, etc. + A leaked session ID enables the third party to access all + resources associated with a specific ID. First, URLs carrying + session IDs. If there are links to an external site or resource, + the URL including the session ID might be stored in the external + site's referrer logs. Second, a more active attacker might listen + to network traffic. If it is unencrypted, session IDs will flow + in plain text over the network. The solution is to implement + SSL/TLS on the server and make it mandatory for users. + HSTS should be used for improved security. </para> <note> <simpara> - Even HTTPS cannot protect confidential data at all times. + Even HTTPS CANNOT protect confidential data at all times. For example the CRIME and Beast vulnerabilities may enable an - attacker to read the data. Also note that there are many networks - that use HTTPS MITM proxies for audit purposes. Attackers may also - set up such a proxy. + attacker to read the data. Also, note that many networks employ + HTTPS MITM proxies for audit purposes. + Attackers may also set up such a proxy. </simpara> </note> </sect2> <sect2 xml:id="features.session.security.management.non-adaptive-session"> - <title>Non-Adaptive Session Management</title> + <title>Nonadaptive Session Management</title> <para> - PHP's session manager is adaptive by default currently. Adaptive session manager - has additional risks. + PHP's session manager is adaptive by default currently. + An adaptive session manager bears additional risks. </para> <para> - Since PHP 5.5.2, <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - is available. When it is enabled, and the session save handler supports - it, an uninitialized session ID is rejected and a new session ID is - created. This prevents an attack that forces users to use known session - ID. Attacker may paste links or send mail that contains the session - ID. e.g. http://example.com/page.php?PHPSESSID=123456789 If <link - linkend="ini.session.use-trans-sid">session.use_trans_sid</link> is - enabled, the victim will start a session using the attacker provided - session ID. <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - mitigates the risk. + As of PHP 5.5.2, + <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> + is available. When it is enabled, and the session save handler supports it, + an uninitialized session ID is rejected and a new one is created. + This prevents an attack that forces users to use a known session ID. + An attacker may paste links or send emails that contains the session ID. + E.g. <literal>http://example.com/page.php?PHPSESSID=123456789</literal> if + <link linkend="ini.session.use-trans-sid">session.use_trans_sid</link> + is enabled, the victim will start a session using the session ID provided + by the attacker. + <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> + mitigate this risk. </para> <warning> <simpara> User defined save handlers can also support strict session mode by - implementing session ID validation. All user defined save handlers must - implement session ID validation. + implementing session ID validation. All user defined save handlers + SHOULD implement session ID validation. </simpara> </warning> <para> - The session ID cookie could be set with domain, path, httponly and secure - attributes. There is precedence defined by browsers. By using the - precedence, attacker can set session ID that could be used - permanently. Use of <link - linkend="ini.session.use-only-cookies">session.use_only_cookies</link> - will not solve this issue. <link - linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - mitigates this risk. With <link - linkend="ini.session.use-strict-mode">session.use_strict_mode</link>=On, - the uninitialized session ID will not be accepted. + The session ID cookie MAY be set with the domain, path, httponly, + secure and, as of PHP 7.3, SameSite attributes. + <!-- Not exactly sure what the meaning here is - girgias --> + There is precedence defined by browsers. + By using the precedence, an attacker can set session ID that + could be used permanently. Use of + <link linkend="ini.session.use-only-cookies">session.use_only_cookies</link> + will not solve this issue. + <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> + mitigates this risk. With + <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>=On, + the uninitialized session ID will be refused. </para> <note> <simpara> - Even though <link - linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - mitigates the risk of adoptive session management, attacker can force - users to use initialized session ID which is created by attacker. e.g. - JavaScript injection. This attack could be mitigated by this manual's - recommendations. + Even though + <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> + mitigates the risk of adaptive session management, an attacker can force + users to use an initialized session ID which has been created by an attacker. + E.g. JavaScript injection. + This attack can be mitigated by this manual's recommendations. </simpara> <simpara> - If you follow this manual, you will enable <link - linkend="ini.session.use-strict-mode">session.use_strict_mode</link>, - use time-stamp based session management, and regenerate session ID - by <function>session_regenerate_id</function> with recommended procedure. - If you do all of these, attacker generated session ID will eventually - deleted. + By following this manual, developers SHOULD enable, + <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>, + use timestamp based session management, and regenerate session IDs using + <function>session_regenerate_id</function> with recommended procedures. + If developers follow all of the above, an attacker generated session ID + will eventually be deleted. </simpara> <simpara> - When obsolete session access happened, you should save all active - session data for the user. It will be useful for investigation later. - Then force the user to logout from all sessions. i.e. Require users - to re-authenticate. This way, you can prevent attackers from - keep abusing stolen sessions. + When an access to an obsolete session occurs, developers SHOULD save all + active session data of the user. As this information will be relevant + for an ensuing investigation. The user should be forcefully logged out + of all sessions, i.e. require them to reauthenticate. + This prevents attackers from abusing stolen sessions. </simpara> </note> <warning> <simpara> - Access to obsolete session data does not mean attack always. - Unstable network and/or immediate active session deletion will - cause legitimate users to use obsolete sessions. + Access to an obsolete session does not necessarily suggest an attack. + An unstable network and/or immediate deletion of the active session + will result in legitimate users using obsolete sessions. </simpara> </warning> <para> - Since PHP 7.1.0, <function>session_create_id</function> is added. - This function could be used to prefix session ID by user ID to - access active sessions for a user efficiently. Enabling + As of PHP 7.1.0, <function>session_create_id</function> has been added. + This function may be operated to access all active sessions of a user + efficiently by prefixing the session IDs with the user ID. Enabling <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - is very important with this setup. Otherwise, malicious users can set + is vital with this setup. Otherwise, malicious users can set malicious session ID for other users. </para> <note> <simpara> - Users prior to PHP 7.1.0 should use CSPRNG, e.g. /dev/urandom, or + Users prior to PHP 7.1.0 SHOULD use CSPRNG, e.g. /dev/urandom, or <function>random_bytes</function> and hash functions to generate - new session ID. <function>session_create_id</function> has - collision detection and generates session ID according to session - INI settings. Use of <function>session_create_id</function> is - preferred. + a new session ID. <function>session_create_id</function> has + collision detection and generates a session ID according to the + session's INI settings. + Use of <function>session_create_id</function> is preferred. </simpara> </note> @@ -167,98 +172,95 @@ <para> <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - is good mitigation, but it is not enough mitigation. Developer must use + is a good mitigation, however not sufficient. Developers MUST equally use <function>session_regenerate_id</function> for session security. </para> <para> - Session ID regeneration reduces risk of stolen session ID, thus + Session ID regeneration reduces the risk of stolen session IDs, thus <function>session_regenerate_id</function> must be called periodically. - e.g. Regenerate session ID for every 15 minutes for security - sensitive content. Even when session ID is stolen, either legitimate - user or attacker session will be expired. i.e. User or attacker access - will generate obsolete session access error. + E.g. Regenerate the session ID every 15 minutes for security sensitive content. + Even in the case that a session ID is stolen, both the legitimate + user's and the attacker's session will expire. + In other words access by the user or the attacker will + generate an obsolete session access error. </para> <para> - Session ID must be regenerated when user is authenticated. - <function>session_regenerate_id</function> must be called prior to - set authentication information to $_SESSION. (Since PHP 7.0.0, - <function>session_regenerate_id</function> saves current session - data automatically in order to save time-stamp/etc to current session.) - Make sure only new session contains authenticated flag. + Session IDs MUST be regenerated when user privileges are elevated, + such as after authenticating. + <function>session_regenerate_id</function> MUST be called prior to + setting the authentication information to $_SESSION. (As of PHP 7.0.0, + <function>session_regenerate_id</function> saves the current session data + automatically in order to save timestamp/etc. to the current session.) + Ensure only the new session contains the authenticated flag. </para> <para> - Developer must NOT rely on session ID expiration by <link - linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link>. - Attackers may access victim's session ID periodically to prevent - expiration and keep exploiting victim's session ID including - authenticated sessions. + Developers MUST NOT rely on session ID expiration by + <link linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link>. + Attackers may access a victim's session ID periodically to prevent its + expiration and keep exploiting it, including an authenticated session. </para> <para> - Instead, you must implement time-stamp based session data management - by yourself. + Instead, developers MUST implement timestamp based session data management. </para> <warning> <simpara> - Although session manager can manage time-stamp transparently, but this - feature is not implemented. Old session data must be kept until - GC. At the same time, developers must make sure obsolete session data - is removed. However, developers must NOT remove active session data - immediately. - i.e. Never call <literal>session_regenerate_id(true);</literal> - and <function> session_destroy</function> for active session. - This may sound contradictory, but this is the mandatory requirement. + Although the session manager can manage timestamps transparently, + this feature is unimplemented. Old session data must be kept until GC. + Simultaneously, developers must assure themselves obsolete session data + is removed. However, developers MUST NOT remove active session data immediately. + I.e. <literal>session_regenerate_id(true);</literal> and + <function>session_destroy</function> must never be called together for an active session. + This may sound contradictory, but this is a mandatory requirement. </simpara> </warning> <para> - <function>session_regenerate_id</function> does not delete - old session by default. Old authenticated session may be available - for use. Developers must prevent old session to be used by anyone, - must prohibit access to obsolete session data by themselves using - time-stamp. + <function>session_regenerate_id</function> does NOT delete outdated + sessions by default. + Obsolete authenticated sessions may be present for use. + Developers must prevent outdated sessions to be consumed by anyone. + They must prohibit access to obsolete session data by themselves using timestamps. </para> <warning> <simpara> - Immediate active session removal has unwanted side effects. - Session could be vanished when there are concurrent connections - to web application and/or network is unstable. + The sudden removal of an active session produces undesirable side effects. + Sessions can vanish when there are concurrent connections to the web + application and/or the network is unstable. </simpara> <simpara> - Possibly malicious access cannot be detected with immediate active - session removal also. + Potential malicious access is undetectable with the sudden removal of active sessions. </simpara> <simpara> - Instead of deleting old session immediately, you must set short term - expiration time (time-stamp) in $_SESSION, and prohibit access to - the session data by yourself. + Instead of deleting outdated sessions immediately, developers must set a + short-term expiration time (timestamp) in $_SESSION, + and prohibit access to the session data by themselves. </simpara> <simpara> - You must not prohibit access to old session data immediately after - <function>session_regenerate_id</function>. It must be prohibited - a little later. e.g. A few seconds later for stable wired network. - A few minutes later for unstable network such as mobile or WiFi. + Developers MUST NOT prohibit access to old session data immediately after + <function>session_regenerate_id</function>. It must be prohibited at a + later stage. E.g. a few seconds later for stable networks, like a wired network, + and a few minutes later for unstable networks such as cell phones or Wi-Fi. </simpara> <simpara> - If user accesses to obsolete session(expired session), - deny access to it. It is recommended to remove authenticated status - from all of the users' session because it is likely an attack. + If a user accesses an obsolete session (expired session), access to it should be denied. + It is also recommended to remove the authenticated status from all of the user's + sessions to as it is likely to represent an attack. </simpara> </warning> <para> Proper use of <link linkend="ini.session.use-only-cookies">session.use_only_cookies</link> - and <function>session_regenerate_id</function> could cause personal - DoS by undeletable cookies set by attackers. When this is the case, - you may ask users to remove cookies and warn users that there could - be possible security issues. Attackers may set malicious cookies via - vulnerable web application, vulnerable/malicious browser plugins, - physically compromised device, etc. + and <function>session_regenerate_id</function> can cause personal DoS with + undeletable cookies set by attackers. In this case, developers may invite users + to remove cookies and advise them they may be affected by a security issue. + Attackers may set malicious cookies via a vulnerable web application, + an exposed/vicious browser plugin, a physically compromised device, etc. </para> <warning> @@ -268,9 +270,8 @@ to enable <literal>use_strict_mode</literal>. </simpara> <simpara> - DoS could happen only when the account is under attack by crackers. - JavaScript injection vulnerability in application is the most - common cause. + DoS can only happen when the account is under attack. A JavaScript injection + vulnerability in an application represents the most common cause. </simpara> </warning> @@ -280,43 +281,44 @@ <title>Session Data Deletion</title> <para> - Obsolete session data must be inaccessible and deleted. Current - session module does not handle this well. + Obsolete session data MUST be inaccessible and deleted. + The current session module does not handle this well. </para> <para> - Obsolete session data is better to be removed as soon as possible. - However, active sessions MUST NOT be removed immediately. To satisfy - these requirements, you MUST implement time-stamp based session - data management by yourself. + Obsolete session data SHOULD be removed as soon as possible. + However, active sessions MUST NOT be removed instantly. + To satisfy those requirements, developers MUST implement timestamp + based session data management by themselves. </para> <para> - Set and manage expiration time-stamp in $_SESSION. Prohibit access - to obsolete session data. When obsolete session data access is detected, - it is advised to remove all authenticated status from the user's sessions - and force them to re-authenticated. Obsolete session data access could be - an attack. To do this, you must keep track active sessions per user. + Set and manage expiration timestamp in $_SESSION. + Prohibit access to outdated session data. + When access to obsolete session data is detected, it is advised to remove all + authenticated status from the user's sessions and force them to re-authenticate. + Access to obsolete session data can represent an attack. + To achieve this, developers MUST keep track of all active sessions of every user. </para> <note> <simpara> - Access to obsolete session could happen by unstable network and/or - concurrent access to web site also. Server tried to set new session - ID via cookie, but Set-Cookie packet may not be reached to client due to - lost connection. One connection may issue new session ID by - <function>session_regenerate_id</function>, but another conncurrent - connection may not get the new session ID yet. - Therefore, you must prohibit access to obsolete session a while later. - i.e. Time-stamp based session management is mandatory. + Access to an obsolete session can also happen because of an unstable network + and/or concurrent access to the web site. + E.g the server tried to set a new session ID via a cookie, but the Set-Cookie + packet may not have reached the client due to loss of connection. + One connection may issue a new session ID by <function>session_regenerate_id</function>, + but another concurrent connection may not have received the new session ID yet. + Therefore, developers must prohibit access to obsolete session at a later stage. + I.e. timestamp based session management is mandatory. </simpara> </note> <para> - In short, do not destroy session data by <function>session_regenerate_id</function> - nor <function>session_destroy</function>, but use time-stamp to control - access to session data. Let <function>session_gc</function> to remove - obsolete data from session data storage. + In summary, session data MUST NOT be destroyed with + <function>session_regenerate_id</function> nor <function>session_destroy</function>, + but timestamps MUST be used to control access to session data. + Let <function>session_gc</function> remove obsolete data from the session data storage. </para> </sect2> @@ -325,24 +327,24 @@ <title>Session and Locking</title> <para> - Session data is locked to avoid races by default. Locking is mandatory - to keep session data consistent across requests. + Session data is locked to avoid race conditions by default. + Locking is mandatory to keep session data consistent across requests. </para> <para> - However, locking can be abused by attacker to perform DoS attacks. To - mitigate risks of DoS by session lock, minimize lock. Use read - only sessions when session data update is not required. - Use 'read_and_close' option with <function>session_start</function>. + However, session-locking can be abused by attackers to perform DoS attacks. + To mitigate the risk of a DoS attack by session-locking, minimize locks. + Use read only sessions when session data does not need to be updated. + Use the 'read_and_close' option with <function>session_start</function>. <literal>session_start(['read_and_close'=>1]);</literal> - Close session as soon as you finish updating $_SESSION by + Close the session as soon as possible after updating $_SESSION by using <function>session_commit</function>. </para> <para> - Current session module does not detect $_SESSION modification while - session is inactive. It is your responsibility not to modify $_SESSION - when session is inactive. + The current session module does NOT detect any modification of $_SESSION + when the session is inactive. It is the developer's responsibility not + to modify $_SESSION when the session is inactive. </para> </sect2> @@ -351,114 +353,120 @@ <title>Active Sessions</title> <para> - Developers should keep track active sessions per user and notify the user - how many active sessions, from which IP (and area), how long is active, etc. - PHP does not keep track these. You are supposed to do so. + Developers SHOULD keep track of all active sessions for every user. + And notify them of how many active sessions, from which IP (and area), + how long it has been active, etc. + PHP does NOT keep track of these. Developers are supposed to do so. </para> <para> - There are number of ways for the implementation. You may setup a - database that keeps track required data and store information - to it. Since session data is GCed, you have to take care of GCed data + Various ways to implement this exist. + One possible implementation is setting up a database that keeps track + of the required data and stores any relevant information. + Since session data is GCed, developers must take care of the GCed data to maintain the active session database consistency. </para> <para> - One of the simplest implementation is "User ID prefixed session ID" and - store required information to $_SESSION. Many databases have good - performance for selecting string prefix. You can use - <function>session_regenerate_id</function> and + One of the simplest implementations is "User ID prefixed session ID" + and store the required information in $_SESSION. + Many databases posses good performance for selecting string prefix. + Developers MAY use <function>session_regenerate_id</function> and <function>session_create_id</function> for this. </para> <warning> <simpara> - Never use confidential data as prefix. If user ID is confidential, - consider to use <function>hash_hmac</function>. + Never employ confidential data as a prefix. + If the user ID is confidential, consider using + <function>hash_hmac</function>. </simpara> </warning> <warning> <simpara> Enabling <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> - is mandatory for this setup. Make sure it is enabled, otherwise - active session database can be compromised. + is mandatory for this setup. Ensure it is enabled. + Otherwise the active session database can be compromised. </simpara> </warning> <para> - Time-stamp based session management is mandatory to detect obsolete session - access. When access to obsolete session is detected, you should remove authentication - flags from all of active sessions for the user. This prevents attackers to - keep exploiting stolen session. + Timestamp based session management is mandatory to detect access to obsolete sessions. + When access to an obsolete session is detected, authentication flags should + be removed from all active sessions of the user. + This prevents attackers to keep exploiting stolen sessions. </para> </sect2> <sect2 xml:id="features.session.security.management.session-and-autologin"> - <title>Session and Auto Login</title> + <title>Session and Auto-login</title> <para> - Developers must NOT use long life session ID for auto login because it - increases risk of stolen session. Auto login should be implemented - by developer. + Developers MUST NOT use long life session IDs for auto-login because it + increases the risk of stolen sessions. + An auto-login feature should be implemented by the developer. </para> <para> - Use secure one time hash key as auto login key using - <function>setcookie</function>. Use secure hash stronger than SHA-2. - e.g. SHA-256 or greater with random data from <function>random_bytes</function> + Use a secure one time hash key as an auto-login key using + <function>setcookie</function>. Use a secure hash stronger than SHA-2. + E.g. SHA-256 or greater with random data from <function>random_bytes</function> or /dev/urandom. </para> <para> - If user is not authenticated, check the one time auto login key is - valid or not. If key is valid, authenticate user and set new secure - one time hash key. Auto login key must be able to be used - only once. i.e. Never reuse auto login key, generate new auto login key - always. + If the user is unauthenticated, check whether the one-time auto-login key is valid or not. + In the case it is valid, authenticate the user and set a new secure one-time hash key. + An auto-login key MUST only be used once, i.e. never reuse an auto-login key, + always generate a new one. </para> <para> - Auto login key is long life authentication key, this key should be - protected as much as possible. Use path/httponly/secure - cookie attributes to protect. i.e. Never transmit auto login key - unless it is required. + An auto-login key is a long life authentication key, + it should be protected as much as possible. + Use path/httponly/secure/SameSite cookie attributes to secure it. + I.e. never transmit the auto-login key unless required. </para> <para> - Developer must implement feature that disables auto login and removes - unneeded auto login key cookie. + Developer must implement the features that disables + auto-login and removes unneeded auto-login key cookie. </para> </sect2> <sect2 xml:id="features.session.security.management.csrf"> - <title>CSRF(Cross Site Request Forgeries)</title> + <title>CSRF (Cross-Site Request Forgeries)</title> <para> - Session and authentication does not protect against CSRF attack. Developers - must implement CSRF protection by themselves. + Sessions and authentication do NOT protect against CSRF attack. + Developers must implement CSRF protection by themselves. </para> <para> - <function>output_add_rewrite_var</function> can be used for CSRF - protection. Refer to the manual page for details. + <function>output_add_rewrite_var</function> can be used for CSRF protection. + Refer to the manual page for details. </para> <note> <simpara> - PHP prior to 7.2.0 uses the same output buffer and INI setting - as trans sid. Therefore, use of <function>output_add_rewrite_var</function> - with PHP prior to 7.2.0 is not recommended. + PHP prior to 7.2.0 uses the same output buffer and INI setting as trans sid. + Therefore, use of <function>output_add_rewrite_var</function> + with PHP prior to version 7.2.0 is not advised. </simpara> </note> <para> - Most web application frameworks support CSRF protection. Refer - to your web application framework manual for details. + Most web application frameworks support CSRF protection. + Refer to the web application framework manual for details. </para> + <para> + As of PHP 7.3 the SameSite attribute for the session cookie can be set. + This is an additional measure which can mitigate CSRF vulnerabilities. + </para> </sect2> </sect1> @@ -466,9 +474,9 @@ <title>Securing Session INI Settings</title> <para> - By securing session related INI settings, you can improve session security. - Some of important INI settings do not have recommended settings. You - are responsible to hardening session settings. + By securing session related INI settings, developers can improve session security. + Some important INI settings do NOT have any recommended settings. + Developers are responsible for hardening session settings. </para> <itemizedlist> @@ -477,15 +485,17 @@ <link linkend="ini.session.cookie-lifetime">session.cookie_lifetime</link>=0 </para> <para> - 0 have special meaning. It tells browsers not to store cookie to - permanent storage. Therefore, when browser is terminated, session - ID cookie is deleted immediately. If developer set other than 0, it may - allow other users to use the session ID. Most applications should - use "0" for this. + <literal>0</literal> possesses a particular meaning. + It informs browsers not to store the cookie to permanent storage. + Therefore, when the browser is terminated, the session ID cookie is deleted immediately. + If developers set this other than 0, it may allow other users to use the session ID. + Most applications SHOULD use "<literal>0</literal>" for this. </para> <para> - If auto login feature is required, implement your own secure auto login - feature. Do not use long life session ID for it. + If an auto-login feature is required, + developers must implement their own secure auto-login feature. + Do not use long life session IDs for this. + More information can be founded above in the relevant section. </para> </listitem> @@ -497,15 +507,15 @@ <link linkend="ini.session.use-only-cookies">session.use_only_cookies</link>=On </para> <para> - Although HTTP cookie has some problems, cookie is preferred way to - manage session ID. Use only cookies for session ID management when - it is possible. Most applications should use cookie for session - ID. + Although HTTP cookies suffer some problems, + cookies remain the preferred way to manage session IDs. + Only use cookies for session ID management when it is possible. + Most applications should use a cookie for the session ID. </para> <para> If <literal>session.use_only_cookies</literal>=Off, - session module will use session ID values set by GET/POST/URL when - session ID cookie is not initialized already. + the session module will use the session ID values set by + GET/POST/URL provided the session ID cookie is uninitialized. </para> </listitem> @@ -514,28 +524,28 @@ <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>=On </para> <para> - Although, enabling <literal>session.use_strict_mode</literal> is - mandatory. It is not enabled by default. + Although, enabling <literal>session.use_strict_mode</literal> + is mandatory for secure sessions. It is disabled by default. </para> <para> - This prevents session module to use uninitialized session ID. In - other word, session module only accepts valid session ID generated - by session module. It rejects session ID supplied by - users. + This prevents the session module to use an uninitialized session ID. + Put differently, the session module only accepts valid session IDs + generated by the session module. + It rejects any session ID supplied by users. </para> <para> - Because of cookie spec, attackers are able to set undeletable session ID - cookies via locally setting cookie database or JavaScript injections. - <literal>session.use_strict_mode</literal> can prevent attacker - initialized session ID being used. + Due to the cookie specification, attackers are capable to place + non removable session ID cookies by locally setting a cookie database + or JavaScript injections. + <literal>session.use_strict_mode</literal> can prevent an attacker + initialized session ID of being used. </para> <note> <para> - Attackers may initialize session ID by their device and may set the - session ID to victim. They must keep the session ID active to abuse. - Attackers require additional steps to perform attack with this attack - scenario. Therefore, <literal>session.use_strict_mode</literal> works - as the mitigation. + Attackers may initialize a session ID with their device and may set + the session ID of the victim. They must keep the session ID active to abuse. + Attackers require additional steps to perform an attack in this scenario. + Therefore, <literal>session.use_strict_mode</literal> works as a mitigation. </para> </note> </listitem> @@ -545,20 +555,18 @@ <link linkend="ini.session.cookie-httponly">session.cookie_httponly</link>=On </para> <para> - Disallow access to session cookie by JavaScript. This setting - prevents cookies stolen by JavaScript injection. + Refuses access to the session cookie from JavaScript. + This setting prevents cookies snatched by a JavaScript injection. </para> <para> - It is possible to use session ID as CSRF protection key, but this is not - recommended. For example, HTML source may be saved and sent to - other users. Developer should not write session ID in web pages for - better security. Almost all applications must use httponly attribute for - session ID cookie. + It is possible to use a session ID as a CSRF token, but this is not recommended. + For example, HTML sources may be saved and sent to other users. + Developers should not write session IDs in web pages for better security. + Almost all applications must use the httponly attribute for the session ID cookie. </para> <note> <para> - CSRF protection token should be renewed periodically just like - session ID + The CSRF token SHOULD be renewed periodically just like the session ID. </para> </note> </listitem> @@ -568,36 +576,28 @@ <link linkend="ini.session.cookie-secure">session.cookie_secure</link>=On </para> <para> - Allows access to session ID cookie only when protocol is HTTPS. If - your web site is HTTPS only web site, you must enable this - setting. + Allow access to the session ID cookie only when the protocol is HTTPS. + If a website is only accessible via HTTPS, it SHOULD enable this setting. </para> <para> - HSTS should be considered for HTTPS only web site. - </para> - <para> - Allows access to session ID cookie only when protocol is HTTPS. If - your web site is HTTPS only web site, you must enable this - setting. + HSTS should be considered for websites accessible only via HTTP. </para> </listitem> - - + <listitem> <para> <link linkend="ini.session.cookie-samesite">session.cookie_samesite</link>="Lax" or <link linkend="ini.session.cookie-samesite">session.cookie_samesite</link>="Strict" </para> <para> - As of PHP 7.3 you can set the <literal>"samesite"</literal> cookie flag for - the session ID cookie. This flag is a way to mitigate CSRF (Cross Site Request Forgery) - attacks. + As of PHP 7.3 the <literal>"SameSite"</literal> attribute can be set for the session ID cookie. + This attribute is a way to mitigate CSRF (Cross Site Request Forgery) attacks. </para> <para> - The difference between Lax and Strict is the accessibility of the cookie in requests - originating from another registrable domain using the HTTP GET method. - Cookies using Lax will be accessible in a GET request originated from another registrable domain, - whereas cookies using Strict will not be accessible in a GET request originated from another registrable domain. + The difference between Lax and Strict is the accessibility of the cookie in + requests originating from another registrable domain employing the HTTP GET method. + Cookies using Lax will be accessible in a GET request originated from + another registrable domain, whereas cookies using Strict will not. </para> </listitem> @@ -607,32 +607,34 @@ </para> <para> <literal>session.gc_maxlifetime</literal> - is setting for deleting obsolete session ID. Reliance on this setting - is NOT recommend. You should manage session life time by time-stamp - by yourself. + is a setting for deleting obsolete session ID. + Reliance on this setting is NOT recommended. + Developers should manage the lifetime of sessions with a timestamp by themselves. </para> <para> - Session GC(garbage collection) is better to be performed by <function>session_gc</function>. - <function>session_gc</function> function is better to be executed by task - managers. e.g. cron on UNIX like systems. + Session GC (garbage collection) is best performed by using <function>session_gc</function>. + The <function>session_gc</function> function should be executed by a task + managers. E.g. cron on UNIX like systems. </para> <para> - GC is performed by probability by default. This setting does not - guarantee old session deletion. Although developer cannot rely - on this setting, setting this to smallest possible value is - recommended. Adjust <link + GC is performed by probability by default. + This setting does NOT guarantee that an outdated session is deleted. + Although developers cannot rely on this setting, + specifying it to the smallest possible value is recommended. + Adjusting <link linkend="ini.session.gc-probability">session.gc_probability</link> and <link linkend="ini.session.gc-divisor">session.gc_divisor</link> so - that obsolete sessions are deleted by appropriate frequency. If - auto login feature is required, implement your own secure auto - login feature. Never use long life session ID for it. + that obsolete sessions are deleted at an appropriate frequency. + If an auto-login feature is required, developers must implement their own + secure auto-login feature, see above for more information. + Never use long life session ID for this feature. </para> <note> <para> - Some session save handler modules do not use this setting for - probability based expiration . e.g. memcached, memcache. - Refer to session save handler documentation for details. + Some session save handler modules do not use this setting for probability + based expiration. E.g. memcached, memcache. + Refer to the session save handler documentation for details. </para> </note> </listitem> @@ -642,15 +644,14 @@ <link linkend="ini.session.use-trans-sid">session.use_trans_sid</link>=Off </para> <para> - Use of transparent session ID management is not prohibited. You - may use it when it is needed. However, disabling transparent - session ID management would improve general session ID security by - removing possibility of session ID injection and session ID leak. + Use of a transparent session ID management is not prohibited. + Developers may employ it when it is required. + However, disabling transparent session ID management improves the general session + ID security by eliminating the possibility of a session ID injection and/or leak. </para> <note> <para> - Session ID may leak from bookmarked URL, e-mailed URL, saved HTML - source. + Session ID may leak from bookmarked URLs, e-mailed URLs, saved HTML source, etc. </para> </note> </listitem> @@ -660,9 +661,10 @@ <link linkend="ini.session.trans-sid-tags">session.trans_sid_tags</link>=[limited tags] </para> <para> - (PHP 7.1.0 &gt;=) You should not rewrite unneeded HTML tags. Default - would be good enough for most usage. Older PHP uses - <link linkend="ini.url-rewriter.tags">url_rewriter.tags</link> for this. + (PHP 7.1.0 &gt;=) Developers SHOULD NOT rewrite unneeded HTML tags. + Default value should be sufficient for most usages. + Older PHP versions use + <link linkend="ini.url-rewriter.tags">url_rewriter.tags</link> instead. </para> </listitem> @@ -671,26 +673,26 @@ <link linkend="ini.session.trans-sid-hosts">session.trans_sid_hosts</link>=[limited hosts] </para> <para> - (PHP 7.1.0 &gt;=) This INI defines whitelist hosts that allows trans sid - rewrite. Never add untrusted host. Session module allow only $_SERVER['HTTP_HOST'] - when this setting is empty. + (PHP 7.1.0 &gt;=) This INI defines whitelist hosts that allows trans sid rewrite. + Never add untrusted hosts. + Session module only allows $_SERVER['HTTP_HOST'] when this setting is empty. </para> </listitem> <listitem> <para> - <link linkend="ini.session.referer-check">session.referer_check</link>=[your originating URL] + <link linkend="ini.session.referer-check">session.referer_check</link>=[originating URL] </para> <para> When <link linkend="ini.session.use-trans-sid">session.use_trans_sid</link> is enabled. - It reduces risk of session ID injection. If your site is - http://example.com/, set http://example.com/ to it. Note that when - HTTPS is used the browser will not send the referrer header. Browsers may - not send the referrer header by configuration. Use of this - setting is recommended Therefore, this setting - is not reliable security measure. + It reduces the risk of session ID injection. + If a website is http://example.com/, set http://example.com/ to it. + Note that with HTTPS browsers will not send the referrer header. + Browsers may not send the referrer header by configuration. + Therefore, this setting is not a reliable security measure. + Use of this setting is recommended. </para> </listitem> @@ -699,13 +701,12 @@ <link linkend="ini.session.cache-limiter">session.cache_limiter</link>=nocache </para> <para> - Make sure HTTP contents are not cached for authenticated - session. Allow caching only when contents are not private. - Otherwise, contents may be exposed. "private" may be used - if HTTP content does not include security sensitive data. Note - that "private" may leave private data cached by shared - clients. "public" may be used only when HTTP content does not - contain any private data at all. + Ensure HTTP content are uncached for authenticated sessions. + Allow caching only when the content is not private. + Otherwise, content may be exposed. "private" may be employed if HTTP content does not + include security sensitive data. + Note that "private" may transmit private data cached by shared clients. + "public" must only be used when HTTP content does not contain any private data at all. </para> </listitem> @@ -714,9 +715,9 @@ <link linkend="ini.session.sid-length">session.sid_length</link>="48" </para> <para> - (PHP 7.1.0 &gt;=) Longer session ID results in stronger session - ID. Developer should consider session ID length 32 chars or more. At - least 26 chars is required when + (PHP 7.1.0 &gt;=) Longer session IDs results in stronger session IDs. + Developers should consider a session ID length of 32 characters or more. + At least 26 characters are required when <link linkend="ini.session.sid-bits-per-character">session.sid_bits_per_character</link>="5". </para> </listitem> @@ -726,8 +727,9 @@ <link linkend="ini.session.sid-bits-per-character">session.sid_bits_per_character</link>="6" </para> <para> - (PHP 7.1.0 &gt;=) The more bits in a session ID char, session module - generates stronger session ID for the same session ID length. + (PHP 7.1.0 &gt;=) The more bits there are in a session ID character, + the stronger the session ID generated by the session module is for an + identical session ID length. </para> </listitem> @@ -736,12 +738,12 @@ <link linkend="ini.session.hash-function">session.hash_function</link>="sha256" </para> <para> - (PHP 7.1.0 &lt;) Stronger hash function will generates stronger session - ID. Although hash collision is unlikely even with MD5 hash, developers - should use SHA-2 or stronger hash functions for the task. Developers may - use stronger hashes like sha384 and sha512. Make sure you feed long - enough <link linkend="ini.session.entropy-length">entropy</link> for - the hash function used. + (PHP 7.1.0 &lt;) A stronger hash function will generate a stronger session ID. + Although hash collision is unlikely even with the MD5 hashing algorithm, + developers should use SHA-2 or a stronger hashing algorithm like sha384 and sha512. + Developers must ensure they feed a long enough + <link linkend="ini.session.entropy-length">entropy</link> + for the hashing function used. </para> </listitem> @@ -770,4 +772,3 @@ vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> - => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=89780 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=89780 ------------------------------------------------------------------ Modified: en/reference/stats/functions/stats-stat-factorial.xml By: girgias on 2019-03-13 12:30:48 =================================================================== --- en/reference/stats/functions/stats-stat-factorial.xml +++ en/reference/stats/functions/stats-stat-factorial.xml @@ -49,15 +49,6 @@ --> <!-- - <refsect1 role="unicode"> - &reftitle.unicode; - <para> - Information specific to unicode, from the PHP 6 changes. - </para> - </refsect1> - --> - - <!-- <refsect1 role="changelog"> &reftitle.changelog; <informaltable> @@ -113,22 +104,6 @@ </refsect1> --> - <!-- - <refsect1 role="notes"> - &reftitle.notes; - <caution> - <para> - Any notes that don't fit anywhere else should go here. - 90% of the time, notes, warnings or cautions are better placed in the - parameters section. Consider that before using this section! - </para> - </caution> - &note.language-construct; - &note.not-bin-safe; - &note.registerglobals; - </refsect1> - --> - <!-- <refsect1 role="seealso"> &reftitle.seealso; => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90188 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90188 ------------------------------------------------------------------ Modified: en/reference/stats/functions/stats-rand-gen-noncentral-chisquare.xml By: girgias on 2019-03-13 12:31:32 =================================================================== --- en/reference/stats/functions/stats-rand-gen-noncentral-chisquare.xml +++ en/reference/stats/functions/stats-rand-gen-noncentral-chisquare.xml @@ -61,15 +61,6 @@ --> <!-- - <refsect1 role="unicode"> - &reftitle.unicode; - <para> - Information specific to unicode, from the PHP 6 changes. - </para> - </refsect1> - --> - - <!-- <refsect1 role="changelog"> &reftitle.changelog; <informaltable> @@ -125,22 +116,6 @@ </refsect1> --> - <!-- - <refsect1 role="notes"> - &reftitle.notes; - <caution> - <para> - Any notes that don't fit anywhere else should go here. - 90% of the time, notes, warnings or cautions are better placed in the - parameters section. Consider that before using this section! - </para> - </caution> - &note.language-construct; - &note.not-bin-safe; - &note.registerglobals; - </refsect1> - --> - <!-- <refsect1 role="seealso"> &reftitle.seealso; => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90189 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90189 ------------------------------------------------------------------ Modified: en/reference/stats/functions/stats-dens-uniform.xml By: girgias on 2019-03-13 12:32:16 =================================================================== --- en/reference/stats/functions/stats-dens-uniform.xml +++ en/reference/stats/functions/stats-dens-uniform.xml @@ -71,15 +71,6 @@ --> <!-- - <refsect1 role="unicode"> - &reftitle.unicode; - <para> - Information specific to unicode, from the PHP 6 changes. - </para> - </refsect1> - --> - - <!-- <refsect1 role="changelog"> &reftitle.changelog; <informaltable> @@ -135,22 +126,6 @@ </refsect1> --> - <!-- - <refsect1 role="notes"> - &reftitle.notes; - <caution> - <para> - Any notes that don't fit anywhere else should go here. - 90% of the time, notes, warnings or cautions are better placed in the - parameters section. Consider that before using this section! - </para> - </caution> - &note.language-construct; - &note.not-bin-safe; - &note.registerglobals; - </refsect1> - --> - <!-- <refsect1 role="seealso"> &reftitle.seealso; => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90190 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90190 ------------------------------------------------------------------ Modified: en/reference/stats/functions/stats-dens-pmf-negative-binomial.xml By: girgias on 2019-03-13 12:33:03 =================================================================== --- en/reference/stats/functions/stats-dens-pmf-negative-binomial.xml +++ en/reference/stats/functions/stats-dens-pmf-negative-binomial.xml @@ -71,15 +71,6 @@ --> <!-- - <refsect1 role="unicode"> - &reftitle.unicode; - <para> - Information specific to unicode, from the PHP 6 changes. - </para> - </refsect1> - --> - - <!-- <refsect1 role="changelog"> &reftitle.changelog; <informaltable> @@ -135,22 +126,6 @@ </refsect1> --> - <!-- - <refsect1 role="notes"> - &reftitle.notes; - <caution> - <para> - Any notes that don't fit anywhere else should go here. - 90% of the time, notes, warnings or cautions are better placed in the - parameters section. Consider that before using this section! - </para> - </caution> - &note.language-construct; - &note.not-bin-safe; - &note.registerglobals; - </refsect1> - --> - <!-- <refsect1 role="seealso"> &reftitle.seealso; => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90191 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90191 ------------------------------------------------------------------ Modified: en/reference/stats/functions/stats-cdf-normal.xml By: girgias on 2019-03-13 12:33:38 =================================================================== --- en/reference/stats/functions/stats-cdf-normal.xml +++ en/reference/stats/functions/stats-cdf-normal.xml @@ -130,15 +130,6 @@ --> <!-- - <refsect1 role="unicode"> - &reftitle.unicode; - <para> - Information specific to unicode, from the PHP 6 changes. - </para> - </refsect1> - --> - - <!-- <refsect1 role="changelog"> &reftitle.changelog; <informaltable> @@ -194,22 +185,6 @@ </refsect1> --> - <!-- - <refsect1 role="notes"> - &reftitle.notes; - <caution> - <para> - Any notes that don't fit anywhere else should go here. - 90% of the time, notes, warnings or cautions are better placed in the - parameters section. Consider that before using this section! - </para> - </caution> - &note.language-construct; - &note.not-bin-safe; - &note.registerglobals; - </refsect1> - --> - <!-- <refsect1 role="seealso"> &reftitle.seealso; => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90192 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90192 ------------------------------------------------------------------ Modified: en/reference/stats/functions/stats-cdf-noncentral-t.xml By: girgias on 2019-03-13 12:34:11 =================================================================== --- en/reference/stats/functions/stats-cdf-noncentral-t.xml +++ en/reference/stats/functions/stats-cdf-noncentral-t.xml @@ -131,15 +131,6 @@ --> <!-- - <refsect1 role="unicode"> - &reftitle.unicode; - <para> - Information specific to unicode, from the PHP 6 changes. - </para> - </refsect1> - --> - - <!-- <refsect1 role="changelog"> &reftitle.changelog; <informaltable> @@ -195,22 +186,6 @@ </refsect1> --> - <!-- - <refsect1 role="notes"> - &reftitle.notes; - <caution> - <para> - Any notes that don't fit anywhere else should go here. - 90% of the time, notes, warnings or cautions are better placed in the - parameters section. Consider that before using this section! - </para> - </caution> - &note.language-construct; - &note.not-bin-safe; - &note.registerglobals; - </refsect1> - --> - <!-- <refsect1 role="seealso"> &reftitle.seealso; => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90193 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90193 ------------------------------------------------------------------ Modified: en/reference/zmq/zmqsocket/recv.xml By: Maxime Veber on 2019-03-28 09:34:25 =================================================================== --- en/reference/zmq/zmqsocket/recv.xml +++ en/reference/zmq/zmqsocket/recv.xml @@ -15,7 +15,7 @@ </methodsynopsis> <para> Receive a message from a socket. By default receiving will block until a message is available unless - <constant>ZMQ::MODE_NOBLOCK</constant> flag is used. <constant>ZMQ::SOCKOPT_RCVMORE</constant> + <constant>ZMQ::MODE_DONTWAIT</constant> flag is used. <constant>ZMQ::SOCKOPT_RCVMORE</constant> socket option can be used for receiving multi-part messages. See <function>ZMQSocket::setSockOpt</function> for more information. </para> @@ -64,10 +64,10 @@ /* Try to send / receive */ if ($sending) { echo "Sending messagen"; - $queue->send("This is a message", ZMQ::MODE_NOBLOCK); + $queue->send("This is a message", ZMQ::MODE_DONTWAIT); $sending = false; } else { - echo "Got response: " . $queue->recv(ZMQ::MODE_NOBLOCK) . "n"; + echo "Got response: " . $queue->recv(ZMQ::MODE_DONTWAIT) . "n"; break; } } catch (ZMQSocketException $e) { @@ -100,7 +100,7 @@ &reftitle.returnvalues; <para> Returns the message. Throws ZMQSocketException in error. - If <constant>ZMQ::MODE_NOBLOCK</constant> is used and the operation would + If <constant>ZMQ::MODE_DONTWAIT</constant> is used and the operation would block &boolean; false shall be returned. </para> </refsect1> => Put this change into your patches : https://edit.php.net/?project=php&action=putIntoMyPatches&idDB=90636 => Delete this change: https://edit.php.net/?project=php&action=deleteThisChange&idDB=90636 ------------------------------------------------------------------ -- https://edit.php.net/ This email is send automatically by the Php Docbook Online Editor.

« previous php.doc (#969387200) next »