1

Readlink: примеры (PHP)

Использование readlink в PHP на практических примерах
Раздел: Работа с файловой системой
readlink(string $path): string|false

Описание функции readlink

Функция readlink() в PHP возвращает цель символической ссылки. Она применяется для получения пути, на который указывает символьная ссылка в файловой системе.

Аргументы функции

Функция принимает один обязательный параметр:

  • path (string) - путь к символической ссылке, которую требуется прочитать.

Возвращаемое значение: строка с путем назначения символической ссылки или false в случае ошибки.

Простые примеры использования

Базовое применение

Чтение символической ссылки:

$link = '/var/www/html/link_to_config';
$target = readlink($link);
echo $target;
/etc/nginx/sites-available/config.conf
Обработка ошибки

Когда ссылка не существует:

$result = readlink('/nonexistent/link');
if ($result === false) {
echo 'Символическая ссылка не найдена или недоступна';
}
Символическая ссылка не найдена или недоступна

Похожие функции в PHP

Проверяет, является ли файл символической ссылкой. Лучше использовать перед readlink() для избежания ошибок.

Создает символическую ссылку. Является обратной операцией к readlink().

Возвращает информацию о ссылке. Может использоваться для получения данных о существовании ссылки без чтения ее цели.

Типичные ошибки

Чтение обычного файла

Попытка применить функцию к обычному файлу:

$result = readlink('/etc/passwd');
var_dump($result);
bool(false)
Отсутствие прав доступа

Недостаточные разрешения для чтения ссылки:

// При отсутствии прав на чтение
$target = readlink('/root/secret_link');
if ($target === false) {
echo 'Ошибка доступа к символической ссылке';
}

Изменения в версиях PHP

В PHP 8.0 функция не претерпела значительных изменений. Сохраняется обратная совместимость с предыдущими версиями. В PHP 8.1 улучшены сообщения об ошибках файловой системы, что косвенно затрагивает и работу readlink().

Расширенные примеры

Рекурсивное разрешение ссылок

Функция для получения конечной цели цепочки символических ссылок:

Пример php
function resolveLink($path) {
while (is_link($path)) {
$path = readlink($path);
}
return $path;
}

echo resolveLink('/var/www/link1');
Обработка относительных путей

Символическая ссылка может содержать относительный путь:

Пример php
// Если link2 указывает на '../dir/file.txt'
$target = readlink('link2');
echo realpath(dirname('link2') . '/' . $target);
Использование в скриптах развертывания

Проверка текущей активной версии через символическую ссылку:

Пример php
$currentVersion = readlink('/var/www/current');
if ($currentVersion !== false) {
echo 'Текущая версия: ' . basename($currentVersion);
}
Сравнение путей ссылок

Определение, указывает ли ссылка на конкретный каталог:

Пример php
$linkTarget = readlink('/var/www/shared_storage');
if (realpath($linkTarget) === realpath('/mnt/network/storage')) {
echo 'Ссылка ведет на сетевое хранилище';
}

Аналоги в других языках

Readlink в Python

Функция os.readlink() выполняет аналогичную задачу:

import os
target = os.readlink('/path/to/link')
print(target)
JavaScript (Node.js)

Асинхронный метод fs.readlink():

const fs = require('fs');
fs.readlink('/path/to/link', (err, target) => {
console.log(target);
});
Bash/Shell

Команда readlink в терминале:

readlink -f /path/to/link

PHP readlink function comments

En
Readlink Returns the target of a symbolic link