Добрый день, уважаемые форумчане! Я только не давно стал писать коды по php и столкнулся с такой вот проблемой: при выполнение данного участка кода: Код (Text): chdir ($_SERVER['DOCUMENT_ROOT'].'/news/materials/'); //Путь создания каталога mkdir ("$id_news_v", "$rules_material_folder"); //Имя каталога и его права $material_folder = ($_SERVER['DOCUMENT_ROOT'].'/news/materials/"$id_news_v"/index.php'); if (!file_exists ("$material_folder")) //Проверка наличия файла { $fp = fopen ("$material_folder", "w"); //Создание файла fwrite ($fp, "Содержимое новостей"); //Запись содержимого fclose ($fp); //Закрытие файла }; выводит вот такое сообщение: (именно эти строки кода я указал выше) Сами каталоги создаются нормально (с правами 0770) с нужными ID, но вот внутри самих каталогах не создаются файлы index.php. Искал на других ресурсах, так и не смог разобраться где у меня косяк...Помогите понять как исправить мой кривой кодик. Заранее спасибо за Ваши ответы!
Создаётся строкой выше Код (PHP): mkdir ("$id_news_v", "$rules_material_folder"); Удостоверьтесь, что в переменной $id_news_v нормальное имя папки.
В моем коде (первый пост) как раз все работало нормально, только не создавались файлы в каталогах. Если надо, то могу скинуть все код скрипта.
Это вы называете "работало нормально": ? Тут же написано, что аргумент не верный. Нет такого пути C:/OpenServer/domains/php/news/materials/"$id_news_v"/index.php
имеется ввиду, что в изначальном коде каталоги создаются с имена ID корректно, но главная ругань исходит именно от строк: Код (Text): $fp = fopen ("$material_folder", "w"); //Создание файла fwrite ($fp, "Содержимое новостей"); //Запись содержимого fclose ($fp); //Закрытие файла Как раз вот те самые строки с 30 по 32. Единственно, что приходит в голову так воткнуть проверку, на то что нужный каталог существует, и только после этого уже создавать файлы...
Ок, значит в переменной семерка. Хорошо. потому я предложил исправить ошибку в строке создания пути на Код (PHP): $material_folder = $_SERVER['DOCUMENT_ROOT'].'/news/materials/'.$id_news_v.'/index.php'; чтобы получить Код (Text): C:/OpenServer/domains/php/news/materials/7/index.php , на что вы ответили Так что правда, создаются в изначальном каталоге с именем ID или всё же создаются с именем ".$id_news_v"?
До того как Вы предложили исправленный вариант каталоги создавались с ID (1, 2 и т.д.), а после того как я сделал поправки, то каталоги сдали создаваться с именем ".$id_news_v" (без кавычек)
Ну это лишь значит, что вы что-то не так вставили. Ещё раз, вот эту строчку Код (PHP): $material_folder = ($_SERVER['DOCUMENT_ROOT'].'/news/materials/"$id_news_v"/index.php'); нужно заменить на Код (PHP): $material_folder = $_SERVER['DOCUMENT_ROOT'].'/news/materials/'.$id_news_v.'/index.php'; , т.к. в ней синтаксическая ошибка. В $material_folder будет путь Код (Text): C:/OpenServer/domains/php/news/materials/7/index.php Можете проверить его тем же Код (PHP): var_dump($material_folder); Кстати, а что тут Код (PHP): if (!file_exists ("$material_folder")) //Проверка наличия файла Если файла нет, то создаётся. Так и задумано? Ведь, если выше была mkdir, то файла не должно быть.
Сделал как Вы и советовали, правка $material_folder действительно помогла, но при этом mkdir перестал присваивать ID папкам и ссылается на строку: Код (Text): mkdir ('$id_news_v', 0770); и говорит что такой файл не найден. Тут уже просто поручный круг, при исправлении fopen () выявляется ошибка в mkdir () и в обратную сторону то же самое. Смысл всего этого кода вот в чем, при добавлении новостей автоматически создается каталог с ID новости, в котором после создается файл index.php, который будет выводить конкретную новость (с таким же ID как и у каталога). Спасибо Вам за помощь, буду и дальше думать, как и что можно еще поправить.