Задать вопрос

Не работает создание новой папки с файлом на php, как исправить?

к примеру $b = 81b0bad3c6
тогда должна создаться в папке link папка 81b0bad3c6 с файлом text.txt у которого значение "lol"
но данная конструкция не работает, что делать?(используется php для сайта)

$b = substr(md5(time()), 0, 10);

$c = "/link/$b";
echo "$c";

$file = fopen("$c/text.txt", 'wt');

fwrite($file, "lol");

fclose($file);
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
dyuriev
@dyuriev
A posteriori
корень бед тут
$c = "/link/$b";

вы задаете путь до каталога/файла не относительно корня сайта/скрипта, а путь до файла на сервере

указывайте всегда полный путь до каталога на сервере, а не то как вы его ощущаете.

один из простых и универсальных способов - получить полный путь до каталога, в котором находится скрипт, через магическую константу __DIR__

другой способ (по моему скромному мнению правильный) - вытащить из массива с информацией о среде исполнения путь до корня сайта - $_SERVER['DOCUMENT_ROOT'] (не работает в случае php-cli, запуске скрипта через командную строку, это надо знать и помнить, когда пишете скрипты, которые запускаются из консоли через php /path/to/script.php)

Дальше уже относительно этих путей задавать путь до каталога/файла

UPD: ну и, конечно же, перед созданием файла не забываем создавать каталог, в который файл поместить хотите. mkdir(); вам в помощь

PS: не обольщайтесь, что php позволяет оперировать файлами относительно корня сервера, на нормальном сервере/хостинге, даже если у пользователя, от которого работает сайт, есть права на чтение/запись в какой то каталог за пределами сайта, то через переменную open_basedir ограничиваются возможности ваших скриптов (прописываются каталоги, выше которых ваши скрипты не имеют права сунуться)
Ответ написан
Комментировать
toxa82
@toxa82
Папки, в отличии от файлов, сами не создаются при использовании fopen(). Создавайте сами командой mkdir()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы