php-doc-en/reference/filesystem/functions/realpath.xml
Christoph Michael Becker b82236707b Fix #69339: realpath(false) returns CWD
There is nothing special with realpath() regarding type juggling,
so there's no need to mention that NULL can be passed instead of
an empty string.  That even wouldn't work for strict_types.

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@345785 c90b9560-bf6c-de11-be94-00142212c4b1
2018-10-06 11:56:54 +00:00

193 lines
4.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.realpath">
<refnamediv>
<refname>realpath</refname>
<refpurpose>Returns canonicalized absolute pathname</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>realpath</methodname>
<methodparam><type>string</type><parameter>path</parameter></methodparam>
</methodsynopsis>
<para>
<function>realpath</function> expands all symbolic links and
resolves references to <literal>/./</literal>, <literal>/../</literal> and extra <literal>/</literal> characters in
the input <parameter>path</parameter> and returns the canonicalized
absolute pathname.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>path</parameter></term>
<listitem>
<para>
The path being checked.
<note>
<para>
Whilst a path must be supplied, the value can be an empty string.
In this case, the value is interpreted as the current directory.
</para>
</note>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns the canonicalized absolute pathname on success. The resulting path
will have no symbolic link, <literal>/./</literal> or <literal>/../</literal> components. Trailing delimiters,
such as <literal>\</literal> and <literal>/</literal>, are also removed.
</para>
<para>
<function>realpath</function> returns &false; on failure, e.g. if
the file does not exist.
</para>
<note>
<para>
The running script must have executable permissions on all directories in
the hierarchy, otherwise <function>realpath</function> will return
&false;.
</para>
</note>
<note>
<para>
For case-insensitive filesystems <function>realpath</function> may or may
not normalize the character case.
</para>
</note>
<note>
<para>
The function <function>realpath</function> will not work for a file which
is inside a Phar as such path would be a virtual path, not a real one.
</para>
</note>
&fs.file.32bit;
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.3.0</entry>
<entry>
Prior to this release, if only the last <parameter>path</parameter>
component did not exist, <function>realpath</function> would not fail on
*BSD systems. <function>realpath</function> now fails in this case.
</entry>
</row>
<row>
<entry>5.2.1</entry>
<entry>
Prior to this version, <function>realpath</function> returned &false;
if <parameter>path</parameter> is an empty string or &null;.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>realpath</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
chdir('/var/www/');
echo realpath('./../../etc/passwd') . PHP_EOL;
echo realpath('/tmp/') . PHP_EOL;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
/etc/passwd
/tmp
]]>
</screen>
</example>
<example>
<title><function>realpath</function> on Windows</title>
<para>
On windows <function>realpath</function> will change unix style paths to
windows style.
</para>
<programlisting role="php">
<![CDATA[
<?php
echo realpath('/windows/system32'), PHP_EOL;
echo realpath('C:\Program Files\\'), PHP_EOL;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
C:\WINDOWS\System32
C:\Program Files
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>basename</function></member>
<member><function>dirname</function></member>
<member><function>pathinfo</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
-->