bool is_link ( string $filename )
| 参数 | 描述 |
|---|---|
| filename | 必需。规定要检查的文件路径。 |
如果文件存在且是一个符号链接,返回 TRUE,否则返回 FALSE。
检查文件是否是符号链接:
<?php
$link = 'symlink_to_file';
if (is_link($link)) {
echo "'$link' 是一个符号链接。";
// 获取链接指向的目标
$target = readlink($link);
echo "<br>它指向: $target";
} else {
echo "'$link' 不是一个符号链接。";
}
?>
区分符号链接、普通文件和目录:
<?php
$path = 'my_link';
if (is_link($path)) {
echo "'$path' 是一个符号链接。";
// 检查链接指向的是文件还是目录
$target = readlink($path);
if (is_file($target)) {
echo "<br>它指向一个文件。";
} elseif (is_dir($target)) {
echo "<br>它指向一个目录。";
}
} elseif (is_file($path)) {
echo "'$path' 是一个普通文件。";
} elseif (is_dir($path)) {
echo "'$path' 是一个目录。";
} else {
echo "'$path' 不存在。";
}
?>
创建符号链接并检查:
<?php
$original = 'original_file.txt';
$link_name = 'file_link.txt';
// 首先创建原始文件(如果不存在)
if (!file_exists($original)) {
file_put_contents($original, '这是一个原始文件的内容。');
echo "已创建原始文件: $original<br>";
}
// 创建符号链接(如果不存在)
if (!file_exists($link_name)) {
if (symlink($original, $link_name)) {
echo "已创建符号链接: $link_name -> $original<br>";
} else {
echo "创建符号链接失败。<br>";
}
}
// 检查是否是符号链接
echo "<br>检查结果:<br>";
echo "is_link('$link_name'): " . (is_link($link_name) ? 'TRUE' : 'FALSE') . "<br>";
echo "is_file('$link_name'): " . (is_file($link_name) ? 'TRUE' : 'FALSE') . "<br>";
echo "is_file('$original'): " . (is_file($original) ? 'TRUE' : 'FALSE') . "<br>";
// 清理(可选)
// unlink($link_name);
// unlink($original);
?>
扫描目录并识别符号链接:
<?php
$directory = 'uploads';
// 确保目录存在
if (!is_dir($directory)) {
mkdir($directory, 0755, true);
}
// 在目录中创建一些测试文件和链接
$test_file = $directory . '/test.txt';
file_put_contents($test_file, '测试内容');
$file_link = $directory . '/link_to_file.txt';
if (!file_exists($file_link)) {
symlink($test_file, $file_link);
}
// 扫描目录并检查每个条目
echo "目录 '$directory' 中的内容:<br><br>";
$items = scandir($directory);
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$full_path = $directory . '/' . $item;
echo "• $item: ";
if (is_link($full_path)) {
echo "🔗 符号链接 (指向: " . readlink($full_path) . ")";
} elseif (is_file($full_path)) {
echo "📄 文件";
} elseif (is_dir($full_path)) {
echo "📁 目录";
}
echo "<br>";
}
// 清理
// unlink($file_link);
// unlink($test_file);
// rmdir($directory);
?>
clearstatcache() 清除缓存。
readlink()、symlink() 和 linkinfo() 一起使用。
返回符号链接指向的目标
创建符号链接
获取链接信息
检查是否是文件