関数の概要
PHPの readlink 関数は、シンボリックリンクが指している実際のファイルやディレクトリのパスを取得するための関数です。シンボリックリンクとは、別のファイルやディレクトリを指し示す仮想的なファイルのことで、実際のファイルの場所を取得したい場合に便利です。
パラメータの説明
path(string): シンボリックリンクのファイルパスを指定します。このパスが指しているリンク先が返されます。
戻り値
指定されたシンボリックリンクの参照先のパスを文字列で返します。リンクではないファイルを指定した場合は FALSE を返し、エラー時にも FALSE を返します。
使用例
基本的な使い方
<?php
$link = 'example_link.txt';
$target = readlink($link);
if ($target !== false) {
echo "シンボリックリンクの指している先: " . $target;
} else {
echo "指定したファイルはシンボリックリンクではありません。";
}
?>
上記の例では、’example_link.txt’ がシンボリックリンクであれば、そのリンク先のパスを表示します。そうでない場合はメッセージを表示します。
絶対パスを取得する方法
<?php
$link = 'example_link.txt';
$target = readlink($link);
if ($target !== false) {
// シンボリックリンクのターゲットパスを絶対パスに変換
$absolutePath = realpath(dirname($link)) . DIRECTORY_SEPARATOR . $target;
echo "絶対パス: " . $absolutePath;
} else {
echo "シンボリックリンクではありません。";
}
?>
シンボリックリンクの相対パスが返ってくる場合、dirname()やrealpath()を組み合わせて絶対パスを生成する方法です。
シンボリックリンクかどうかを判定してから取得する
<?php
$link = 'example_link.txt';
if (is_link($link)) {
$target = readlink($link);
echo "リンク先: " . $target;
} else {
echo "指定されたファイルはシンボリックリンクではありません。";
}
?>
is_link()でシンボリックリンクかどうか判別し、安全にreadlink()を使う例です。
関連する関数
is_link(): ファイルがシンボリックリンクかどうかを判定するrealpath(): ファイルの絶対パスを返す(シンボリックリンクを解決したパス)linkinfo(): シンボリックリンクの情報を取得する(UNIX系でのみサポート)symlink(): シンボリックリンクを作成する
まとめ
readlink()はPHPでシンボリックリンクの参照先パスを取得するための便利な関数です。シンボリックリンクかどうかをis_link()で判定してから使うことで、安全に処理が可能です。リンクが相対パスの場合は絶対パスに変換して扱うことも多いでしょう。ファイル操作やリンク管理を行う際に覚えておくと役立つ基本的な関数です。
