PHP symlink(): доступ запрещен в доступной для записи папке

Я хочу создать символическую ссылку с PHP.

Символическая ссылка должна находиться в том же месте, что и загруженный файл, что должно быть в порядке, верно?

Моя реальная проблема заключается в том, что при использовании symlink() я получаю ошибку отказа в разрешении на тот же каталог, в который PHP может писать из $_FILES.

Я сделал тест, используя text.txt в качестве тестового файла и link в качестве символической ссылки:

symlink("repository/text.txt", "link");

Сценарий PHP запускается из content/folder/script.php. Что я здесь делаю неправильно? Нужны ли символическим ссылкам расширения файлов (сомневаюсь) или что-то в этом роде?


person Bojangles    schedule 04.12.2010    source источник
comment
Если вы не указали абсолютный путь для link, PHP будет использовать текущий рабочий каталог, вы этого хотите?   -  person ajreal    schedule 04.12.2010
comment
Да, это была моя проблема - см. сообщение goreSplatter ниже :-)   -  person Bojangles    schedule 04.12.2010


Ответы (1)


Если это код, который вы используете

symlink("repository/text.txt", "link");

И ваш скрипт запускается как /var/www/scripts/script.php, символическая ссылка будет создана в каталоге, в котором запускается скрипт.

Попробуйте использовать абсолютный путь.

person Linus Kleen    schedule 04.12.2010
comment
Спасибо :-) отлично сработало. Проблема заключалась в том, что второй аргумент (link) был относительным, а не абсолютным, как вы сказали. Теперь все исправлено с symlink("repository/file.txt", "repository/link"); - person Bojangles; 04.12.2010