mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-22 11:58:55 +00:00

Cf. <https://github.com/php/doc-en/pull/289>. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@352191 c90b9560-bf6c-de11-be94-00142212c4b1
351 lines
9.5 KiB
XML
351 lines
9.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<refentry xml:id="function.parse-ini-file" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>parse_ini_file</refname>
|
|
<refpurpose>Parse a configuration file</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type class="union"><type>array</type><type>false</type></type><methodname>parse_ini_file</methodname>
|
|
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
|
|
<methodparam choice="opt"><type>bool</type><parameter>process_sections</parameter><initializer>&false;</initializer></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter>scanner_mode</parameter><initializer><constant>INI_SCANNER_NORMAL</constant></initializer></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
<function>parse_ini_file</function> loads in the
|
|
ini file specified in <parameter>filename</parameter>,
|
|
and returns the settings in it in an associative array.
|
|
</para>
|
|
<para>
|
|
The structure of the ini file is the same as the &php.ini;'s.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>filename</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
The filename of the ini file being parsed. If a relative path is used,
|
|
it is evaluated relative to the current working directory, then the
|
|
<link linkend="ini.include-path">include_path</link>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>process_sections</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
By setting the <parameter>process_sections</parameter>
|
|
parameter to &true;, you get a multidimensional array, with
|
|
the section names and settings included. The default
|
|
for <parameter>process_sections</parameter> is &false;
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>scanner_mode</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Can either be <constant>INI_SCANNER_NORMAL</constant> (default) or
|
|
<constant>INI_SCANNER_RAW</constant>. If <constant>INI_SCANNER_RAW</constant>
|
|
is supplied, then option values will not be parsed.
|
|
</para>
|
|
&ini.scanner.typed;
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
The settings are returned as an associative <type>array</type> on success,
|
|
and &false; on failure.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>Contents of <filename>sample.ini</filename></title>
|
|
<programlisting>
|
|
<![CDATA[
|
|
; This is a sample configuration file
|
|
; Comments start with ';', as in php.ini
|
|
|
|
[first_section]
|
|
one = 1
|
|
five = 5
|
|
animal = BIRD
|
|
|
|
[second_section]
|
|
path = "/usr/local/bin"
|
|
URL = "http://www.example.com/~username"
|
|
|
|
[third_section]
|
|
phpversion[] = "5.0"
|
|
phpversion[] = "5.1"
|
|
phpversion[] = "5.2"
|
|
phpversion[] = "5.3"
|
|
|
|
urls[svn] = "http://svn.php.net"
|
|
urls[git] = "http://git.php.net"
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title><function>parse_ini_file</function> example</title>
|
|
<para>
|
|
<link linkend="language.constants">Constants</link> (but not "magic constants" like <constant>__FILE__</constant>)
|
|
may also be parsed
|
|
in the ini file so if you define a constant as an ini value before
|
|
running <function>parse_ini_file</function>, it will be integrated into
|
|
the results. Only ini values are evaluated, and the value must be just the constant. For example:
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
define('BIRD', 'Dodo bird');
|
|
|
|
// Parse without sections
|
|
$ini_array = parse_ini_file("sample.ini");
|
|
print_r($ini_array);
|
|
|
|
// Parse with sections
|
|
$ini_array = parse_ini_file("sample.ini", true);
|
|
print_r($ini_array);
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<screen>
|
|
<![CDATA[
|
|
Array
|
|
(
|
|
[one] => 1
|
|
[five] => 5
|
|
[animal] => Dodo bird
|
|
[path] => /usr/local/bin
|
|
[URL] => http://www.example.com/~username
|
|
[phpversion] => Array
|
|
(
|
|
[0] => 5.0
|
|
[1] => 5.1
|
|
[2] => 5.2
|
|
[3] => 5.3
|
|
)
|
|
|
|
[urls] => Array
|
|
(
|
|
[svn] => http://svn.php.net
|
|
[git] => http://git.php.net
|
|
)
|
|
|
|
)
|
|
Array
|
|
(
|
|
[first_section] => Array
|
|
(
|
|
[one] => 1
|
|
[five] => 5
|
|
[animal] => Dodo bird
|
|
)
|
|
|
|
[second_section] => Array
|
|
(
|
|
[path] => /usr/local/bin
|
|
[URL] => http://www.example.com/~username
|
|
)
|
|
|
|
[third_section] => Array
|
|
(
|
|
[phpversion] => Array
|
|
(
|
|
[0] => 5.0
|
|
[1] => 5.1
|
|
[2] => 5.2
|
|
[3] => 5.3
|
|
)
|
|
|
|
[urls] => Array
|
|
(
|
|
[svn] => http://svn.php.net
|
|
[git] => http://git.php.net
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title><function>parse_ini_file</function> parsing a php.ini file</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// A simple function used for comparing the results below
|
|
function yesno($expression)
|
|
{
|
|
return($expression ? 'Yes' : 'No');
|
|
}
|
|
|
|
// Get the path to php.ini using the php_ini_loaded_file()
|
|
// function available as of PHP 5.2.4
|
|
$ini_path = php_ini_loaded_file();
|
|
|
|
// Parse php.ini
|
|
$ini = parse_ini_file($ini_path);
|
|
|
|
// Print and compare the values, note that using get_cfg_var()
|
|
// will give the same results for parsed and loaded here
|
|
echo '(parsed) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;
|
|
echo '(loaded) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<screen>
|
|
<![CDATA[
|
|
(parsed) magic_quotes_gpc = Yes
|
|
(loaded) magic_quotes_gpc = Yes
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>value interpolation</title>
|
|
<para>
|
|
In addition to evaluating constants, certain characters have special meaning in an ini value.
|
|
Additionally, environment variables and previously defined values may be read using
|
|
<code>${}</code> syntax.
|
|
</para>
|
|
<programlisting>
|
|
<![CDATA[
|
|
; | is used for bitwise OR
|
|
three = 2|3
|
|
|
|
; & is used for bitwise AND
|
|
four = 6&5
|
|
|
|
; ^ is used for bitwise XOR
|
|
five = 3^6
|
|
|
|
; ~ is used for bitwise negate
|
|
negative_two = ~1
|
|
|
|
; () is used for grouping
|
|
seven = (8|7)&(6|5)
|
|
|
|
; \ is used to escape a value.
|
|
newline_is = "\\n" ; results in the string "\n", not a newline character.
|
|
with quotes = "She said \"Exactly my point\"." ; Results in a string with quote marks in it.
|
|
|
|
path = ${PATH}
|
|
also_five = ${five}
|
|
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<screen>
|
|
<![CDATA[
|
|
(parsed) magic_quotes_gpc = Yes
|
|
(loaded) magic_quotes_gpc = Yes
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="notes">
|
|
&reftitle.notes;
|
|
<note>
|
|
<para>
|
|
This function has nothing to do with the
|
|
&php.ini; file. It is already processed by
|
|
the time you run your script. This function can be used to
|
|
read in your own application's configuration files.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
If a value in the ini file contains any non-alphanumeric
|
|
characters it needs to be enclosed in double-quotes (").
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<simpara>
|
|
There are reserved words which must not be used as keys for
|
|
ini files. These include: <literal>null</literal>, <literal>yes</literal>,
|
|
<literal>no</literal>, <literal>true</literal>, <literal>false</literal>,
|
|
<literal>on</literal>, <literal>off</literal>, <literal>none</literal>.
|
|
Values <literal>null</literal>, <literal>off</literal>, <literal>no</literal> and
|
|
<literal>false</literal> result in <literal>""</literal>, and values
|
|
<literal>on</literal>, <literal>yes</literal> and <literal>true</literal> result
|
|
in <literal>"1"</literal>, unless <constant>INI_SCANNER_TYPED</constant> mode is used (as of PHP 5.6.1).
|
|
Characters <literal>?{}|&~!()^"</literal> must not be used anywhere in
|
|
the key and have a special meaning in the value.
|
|
</simpara>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
Entries without an equal sign are ignored. For example, "foo"
|
|
is ignored whereas "bar =" is parsed and added with an empty
|
|
value. For example, MySQL has a "no-auto-rehash" setting
|
|
in <filename>my.cnf</filename> that does not take a value, so
|
|
it is ignored.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
ini files are generally treated as plain text by web servers and thus served to browsers if requested.
|
|
That means for security you must either keep your ini files outside of your docroot or reconfigure your
|
|
web server to not serve them. Failure to do either of those may introduce a security risk.
|
|
</para>
|
|
</note>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>parse_ini_string</function></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|