現在の位置: ホーム> 最新記事一覧> PHP RealPathとDirname関数が一緒に使用される場合、ファイルが配置されているディレクトリへの絶対パスを正確に取得するにはどうすればよいですか?

PHP RealPathとDirname関数が一緒に使用される場合、ファイルが配置されているディレクトリへの絶対パスを正確に取得するにはどうすればよいですか?

gitbox 2025-10-01
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 記事の内容とは何の関係もありませんPHPコードの例</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"これは無関係な部分ですPHPコード,記事の分離を示すために使用されます。"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

PHPファイル操作で,多くの場合、ファイルが配置されているディレクトリへの絶対パスを取得する必要があります,その後の読み取りまたは書き込み操作の場合。`</span><span><span class="hljs-title function_ invoke__">realpath</span></span><span>()`そして`</span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>()`これらは、この種のシナリオで2つの非常に実用的な機能です,彼らはそれぞれ独自の用途を持っています,但搭配使用可以更加精确そして安全地获取文件路径。

</span><span><span class="hljs-comment">### 1. `dirname()`関数</span></span><span>

`</span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>()`ファイルパスを取得するために使用される親ディレクトリ。その基本的な使用法は次のとおりです:

```php
</span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-string">"/var/www/html/index.php"</span></span><span>;
</span><span><span class="hljs-variable">$dirPath</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$dirPath</span></span><span>; </span><span><span class="hljs-comment">// 出力: /var/www/html</span></span><span>
</span></span>

パスにマルチレベルのディレクトリが含まれている場合、2番目のパラメーターを介して返された階層を指定できます。

 <span><span><span class="hljs-variable">$dirPath</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$dirPath</span></span><span>; </span><span><span class="hljs-comment">// 出力: /var/www</span></span><span>
</span></span>

dirname()は、元のパスの相対パスまたは解析された親ディレクトリを返すことに注意してください。これは、パスが実際に存在するかどうかを確認しません。

2。RealPath ()関数

RealPath()は、パスを絶対パスに解析し、シンボリックリンクを解析するために使用されますそして.. 、パスが実際に存在するかどうかを確認しながら。例は次のとおりです。

 <span><span><span class="hljs-variable">$path</span></span><span> = </span><span><span class="hljs-string">"./test/../index.php"</span></span><span>;
</span><span><span class="hljs-variable">$absolutePath</span></span><span> = </span><span><span class="hljs-title function_ invoke__">realpath</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$absolutePath</span></span><span>; </span><span><span class="hljs-comment">// 出力绝对路径,例えば: /var/www/html/index.php</span></span><span>
</span></span>

パスが存在しない場合、 RealPath()はfalseを返します。

3。それを使用して、ファイルが配置されているディレクトリへの絶対パスを取得します

取得したディレクトリパスが正確で絶対的であることを確認するには、次の2つを組み合わせることができます。

 <span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">"./test/../index.php"</span></span><span>;
</span><span><span class="hljs-variable">$absoluteDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>(</span><span><span class="hljs-title function_ invoke__">realpath</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$absoluteDir</span></span><span>; </span><span><span class="hljs-comment">// 出力: /var/www/html</span></span><span>
</span></span>

ここでのプロセスは次のとおりです。

  1. RealPath($ file)は、ファイルパスをReal Absolute Pathに変換します。

  2. dirname()は、絶対パスから親ディレクトリを取得します。

この方法は、あなたが取得するディレクトリパスが存在し、相対パスによって引き起こされる可能性のあるエラーを回避する絶対パスであることを保証できます。

4.シナリオを使用します

  • ファイルを動的にロードしたり、ファイルを含める場合、パスが正しいことを確認する必要があります。

  • ログを保存し、ファイルをスクリプトファイルと同じディレクトリにキャッシュします。

  • プラットフォーム全体に展開するときは、パスの混乱を避けてください。

5。概要

  • dirname() :親ディレクトリを取得し、階層を指定できます。

  • RealPath() :実際に存在する絶対的なパスへのパスを解析します。

  • 結合使用:最初にRealPath()を使用してパスが実際に存在することを確認し、次にDirName()を使用してディレクトリのある場所を取得します。

この使用の組み合わせは、PHPプロジェクトでファイルパスを処理するためのベストプラクティスの1つです。

 <span><span><span class="hljs-comment">// 尾部示例コード</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"記事の終わりの例"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>