WeBinstruments

Инструментарий для веб-мастеров

 

Техподдержка и
сопровождение
сайтов


на сайте на всех сайтах для веб разработчиков везде
 
 Скрипты
  PHP скрипты   
  Flash скрипты   
  Javascript скрипты   

 Софт
  Инструменты SEO   
  Разработка сайтов   
  Серверное ПО   

 Документация
  MySQL   
  PHP   
  HTML   
  Протоколы и сервисы Internet   

 Статьи
  PHP   
  MySQL   
  Сервер   
  еще...   

 Услуги и сервисы
  Домены   
  Хостинги   
  Блоки для сайта   

 Новости


 Контакты
  icq: 158325531
  email:
  все контакты: здесь




Atom все поступления
Раздел Новости
Раздел Услуги и сервисы
Раздел Статьи
Раздел Файлы
комментарии

Главная / Статьи / PHP / Как создать папку в PHP


Как создавать папки в PHP

14.10.2009
сайт автора: http://webi.ru
публикация данной статьи разрешена только со ссылкой на сайт автора статьи

В этой статье я опишу один вариант обхода проблемы создания папок с помощью php в безопасном режиме.
Для создания папки в PHP предусмотрена стандартная функция mkdir(), но в большинстве случаев она оказывается безполезной и многие об этом знают, но не многие знают, что обойти эту проблему можно.
Все очень просто, нужно создавать папки с помощью встроенных в php функций FTP.
Ниже пишу об этом подробнее.


Проблемы с mkdir() при создании папки.
Как известно, если в php включен безопасный режим (safe_mode = on), то создавать папки(директории) с помощь mkdir() не получится. Если сказать точнее, то создать можно, а вот дальнейшее использование этой папки будет невозможным. Вы не сможете грузить файлы в эту папку, переименовывать ее и удалить ее не сможете, даже зайдя через FTP (в некоторых случаях через FTP удалить можно).

Безопасный режим включен по умолчанию на всех серверах и всех хостингах. Если у вас нет возможности отключить безопасный режим, то есть другой выход.


Создание папок в php с помощью FTP.
Почти на всех серверах и хостингах в php включена поддержка ftp.
Вот с помощью этих функций и обойдем проблему создания папки mkdir().
Пример создания папки через FTP.

<?
$conn_id
= @ftp_connect('ftp.server.ru', 21, 5); // коннектимся к серверу FTP
if($conn_id) // если соединение с сервером прошло удачно, продолжаем
{
    
$login_result = @ftp_login($conn_id, 'user', 'pass'); // вводим свои логин и пароль для FTP
    
if($login_result) // если сервер принял логин пароль, идем дальше
    
{
        
// теперь нужно поиграть с пассивным режимом, включить его или выключить(TRUE, FALSE)
        // если дальнейшие функции ftp будут работать не правильно, пробуйте менять этот параметр (TRUE или FALE)
        
ftp_pasv ($conn_id, TRUE); // в данном случае пассивный режим включен
        
ftp_mkdir ($conn_id, '1/2/3'); // ну и само создание папки
    
}
}
ftp_close($conn_id); // и закрываем коннект с FTP
?>

Теперь не большой комментарий к коду.
В первой строке происходит коннект в серверу FTP. Обычно, чтобы законнектиться к локальному FTP серверу достаточно указать localhost в качестве сервера, но можно и полностью указать адрес.
Пассивный режим включить или выключить зависит от настроек FTP.

При создании папки будте внимательны, папка создается от корня входа в FTP. То есть пути тут отличаются от путей файловой системы и папка создается так, как видно именно через FTP.
Если при создании папки вы указываете несколько вложений, как в моем примере "1/2/3", то в этом случае будут созданы все недостающие папки. Если нет папки "1", она будет создана, а в ней будет создана папка "2", а в ней будет создана папка "3". Если промежуточные папки уже существуют, то созданы будут только недостающие.
Перед созданием папки можно переместиться в какую либо папку, например

<? ftp_chdir ($conn_id, '1'); ?>
И после этой функции можно создать папку. Если путь к папке указать '2/3' без начального слэша, тогда папка будет создаваться относительно той папки, в которой сейчас находимся. То есть создана будет папка '1/2/3'

<? ftp_mkdir ($conn_id, '2/3'); ?> 
Если при создании папки указать начальный слэш (/1/2/3), то папка будет создана от корня FTP, независимо от того, в какую папку переместились.



Комментарии

RSS комментарии


14.10.2009 Сергей
все гениальное просто :)



12.12.2009 Виктор
Спасибо, всё работает, вот только в ftp клиенте созданные папки сразу не видны, приходится его перезапускать, т.е. не просто отключить от сервера и коннектиться снова, а закрыть программу и запустить ещё раз (у меня FileZilla Client).



14.12.2009 Админ
Помоему все FTP клиенты кэшируют файлы и папки. Например в Тотал Командере для таких дел существует специальная кнопочка "обновить", обидно что в FileZilla такого нет.



24.01.2010 Александр
как это нет такого в FileZilla у меня версия 3.2.2 ей уже около года и такая функция есть и на сколько я помню всегда была!!!



27.08.2010 Виталий
Папки создаются справами 755, а нужно с 777.
Можно на этапе создания как то настроить с какимим правами будет создаваться папка чере фтп?



27.08.2010 Админ
Виталий, для этого существует функция
ftp_chmod($conn_id, 0777, $file)
после создания папки или файла используйте ее



28.08.2010 Виталий
спасибо, Админ!



12.09.2010 Андрей
Простите а почему у меня не создается несколько директорий то есть:
ftp_mkdir ($conn_id, '1');// так работает
а вот так ftp_mkdir ($conn_id, '1/2/3');// не работает.



12.06.2011 Илья
Что-то не ладиться. Сервер выдает:
<b>Warning: ftp_close() expects parameter 1 to be resource, boolean given in /home/bos/p/h/p/phpscripts/public_html/formf.php on line 19</b>



15.06.2011 Виктор
Илья, пишет, первый параметр в функцию ftp_close передаете не правильный



29.06.2011 Алексей
Такая же проблема как у Андрея
(не создается несколько директорий)
ftp_mkdir ($conn_id, '1');// так работает
а вот так ftp_mkdir ($conn_id, '1/2/3');// не работает.
???



27.07.2011 Виктор
Алексей, странно, я проверил, у меня создает несколько папок.
Может какой-то режим хитрый включен на сервере, тогда надо создавать папки поочереди, сначала создать папку 1, затем войти в нее и создать в ней папку 2, затем войти в папку 2 и создать в ней 3...



07.11.2011 k1-801 (можно Дмитрий)
А удалять папки, насколько я понял, через
rmdir_ftp($conn_id, $dir);
так?

и, кстати, у меня почему-то папку не создаёт (и ошибки не пишет... странно... )



10.03.2012 YA
спасибо, а то я намучился с этим вопросоп.
а у тебя все прости и главное работает



29.05.2012 Михаил
Конечно простите. Где этот код писать а то я в этом не шарю вообще а папку создать ну очень надо ))



04.07.2012 Nomaq
у меня что-то не так.. первый раз код пропускает, второй раз пишет что такая папка уже существует.. так вроде она создается, но ее не видно даже после перезагрузки фтп((((
и еще, мне нужно папку создать не в той же папке где пхп файл, а вернуться на один шаг назад, и там уже войти в другую папку и там создать.. ни типо такого:
../folder1/тут новая папка
прошу помочь, если не сложно ) спасибо)




04.07.2012 Nomaq
с путями разобрался ))) спасибо вообще за статью, редко кто нормально объясняет что как )))



27.01.2013 CiliZ
Молодчина, респект за статью



05.06.2013 Василий
Фирменная папка является основным элементом фирменного стиля компании. Представляет собой изделие для вложения небольшого количества документов и бумажных материалов. Папки используют как внутри компании, для хранения и перемещения документации, так и для рекламных целей. Подробнее на сайте: www.logodesigner.ru/papki




29.03.2014 Аня
Аня


1 2

Добавить свой комментарий


Ваше имя(* обязательно)


Текст сообщения(* обязательно)









 
 
  запомнить

 
Copyright © 2003-2017 WeBi Constructor
Rambler's Top100