Информационный портал

Информационно-новостной портал

Новости рекламы и маркетинга. Новости Интернета.
Море полезной информации на сайте RetailDepartment.ru
Поделиться ссылкой с друзьями

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

Twitter
Нравится
RedLine


Как создавать папки в 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, независимо от того, в какую папку переместились.


Комментарии Как создавать папки в PHP 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

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

Источник: http://webi.ru/webi_articles/mkdir_safe_mode_ftp.html

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

Правила добавления комментариев


Защитный код
Обновить

Download SocComments v1.3