Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как создать файл в определённом каталоге?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как создать файл в определённом каталоге?

Страниц (2): [1] 2 »
 

1. Itan - 08 Октября, 2008 - 09:47:58 - перейти к сообщению
Здравствуйте! Подскажите, пожалуйста, как создать файл в каталоге? Такая конструкция не идёт, создаёт отдельно папку и файл, а не папку с файлом:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. mkdir ( "1", '0755' );
  4. $kat = opendir ( "1" );
  5. $file = fopen ( "1.php", 'w' );
  6. fwrite ( $file, "Всем привет\n" );
  7. fclose ( $file );
  8. closedir ("$kat");
  9. ?>
  10.  

P.S. Код может быть неправильным, т.к. пишу по памяти.
Спасибо.
2. valenok - 08 Октября, 2008 - 10:43:57 - перейти к сообщению
fopen ( "1.php", 'w' );

Где находится файл 1.php ?
3. Itan - 08 Октября, 2008 - 10:50:48 - перейти к сообщению
Этого файла нет, он создаётся сам, или нужно сначала touch("1.php");?
4. valenok - 08 Октября, 2008 - 10:52:36 - перейти к сообщению
Где находится файл или Где вы его создаёте
5. Itan - 08 Октября, 2008 - 11:03:46 - перейти к сообщению
Блин.чёт не доганяю
кароче корневая папка, в ней сценарий, который создаёт папку 1, и должен (по моему замыслу) создать в этой папке файл 1.php
6. valenok - 08 Октября, 2008 - 11:06:06 - перейти к сообщению
ок, перефразирую:

Формулировка 1: Покажите мне, где вы указали своему сценарию где создать файл.
Формулировка 2: Откуда ваш сценарий должен узнать где создать файл ?
7. Itan - 08 Октября, 2008 - 11:09:43 - перейти к сообщению
так вот в том то и дело, что не знаю как указать, я думал, что открыв папку с помощью opendir() можно туда записывать файлы
8. valenok - 08 Октября, 2008 - 11:14:37 - перейти к сообщению
Где вы указали скрипту где создать файл ?
Логика должна подсказывать что это там же где вы указали скрипту что нужно вообще создать файл.

А теперь откройте документацию этой фции и посмотрите что делает функция opendir
чтоб больше сами функционала не придумывали.
9. Itan - 08 Октября, 2008 - 11:38:09 - перейти к сообщению
Хм хорошо, тогда как указать сценарию, где создавать файл?
10. valenok - 08 Октября, 2008 - 12:58:06 - перейти к сообщению
прописать фции создания путь - где создать файл.
Откройте документацию наконец. Посмотрите примеры
11. Champion - 08 Октября, 2008 - 20:24:33 - перейти к сообщению
или смените текующий каталог на тот, где надо создать файл, или напишите полный путь к файлу
12. Itan - 09 Октября, 2008 - 10:19:53 - перейти к сообщению
Разобрался. Смысл такой: юзер вводит название папки, права на эту папку, название файла. Затем создаётся такая папка, такой файл, затем файл копируется в эту папку и удалятся. Пример: сценарий лежит в корне сайта (ну, у меня вертуальный пока), создаёт папку test и файл test.php, затем копирует этот файл в папку test, и удаляет его из корня.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dir="test";
  4. $prava="0755";
  5. $file="test.php";
  6.  
  7. mkdir ("$dir", $prava);
  8. $fp=fopen ("$file", 'w');
  9. fwrite ($fp, "Строка");
  10. fclose ($fp);
  11.  
  12. $new_dir= "$dir/$file";
  13. copy ("$file", "$new_dir");
  14. unlink ("$file");
  15. ?>
  16.  

(Добавление)
Теперь другой вопрос. Например, в корне сайта ничего нет, кроме сценария. И если я ввожу в форму не просто имя папки, а имя вложенной папки (например dir/dir1), то должна сначала создаться папка dir, а затем уже папка dir1. Вроде всё просто, можно воспользоваться поиском подстроки (если содержится слеш, то создать сначала одну папку, затем в ней вторую), но если два слеша, например dir/dir1/dir2, как указать что если 2 слеша, то создать две папки (dir, dir1)?
13. Champion - 09 Октября, 2008 - 10:45:21 - перейти к сообщению
Itan пишет:
оздаёт папку test и файл test.php, затем копирует этот файл в папку test, и удаляет его из корня.

Задача: на стене висит сковородка. Необходимо приготовить яичницу. Решение задачи физиком: поставить сковороду на плиту, зажечь огонь, разбить яйца, посолить, подождать.
Решение математиком: поставить сковороду на плиту, зажечь огонь, разбить яйца, посолить, подождать.

Другая ситуация: сковородка стоит на плите, задача та же.
Физик: зажечь огонь, разбить яйца, поссолить, подождать.
Математик: Вешаем сковородку на стенку, задача сводится к предыдущей.

В данном случае вы как математик))
(Добавление)
Отвечаю дальше. Если 2 слеша, то есть функция explode? которая возвращает массив. Вам будет нужено последовательно создать папки, именами которых будут элементы этого массива
14. Itan - 09 Октября, 2008 - 11:03:29 - перейти к сообщению
Радость Математик, не математик, просто по-другому не знаю как сделать...))
Насчёт функции explode огромное спасибо! Но, можете привести пример, как осуществить создание папки, если значение равно dir/dir1? Пожалуйста..
15. valenok - 09 Октября, 2008 - 11:08:38 - перейти к сообщению
Объясните как вы понимаете вот это:
$new_dir= "$dir/$file";

 

Powered by ExBB FM 1.0 RC1