2013-09-23 7 views
0

Я пытаюсь создать каталоги для лучшей организации файлов. Интерфейс для этого - форма, в которой пользователь вводит название, контент и область (выпадающее меню). Когда пользователь отправит форму, данные будут отправлены в файл с именем save.php и будут обработаны. Ниже приведены коды файла save.php. На самом деле главная цель этого - создать html-файл, а затем организовать эти html-файлы в папки по регионам. Я не могу заставить mkdir() работать. Сообщение «созданный каталог» всегда печатается, но фактическая папка не создается. Как вы думаете, в чем проблема моего кода? Я хочу, чтобы, когда пользователь нажимает кнопку «отправить», будут созданы папки с именами регионов. Пожалуйста помоги? Или любое предложение или другой способ решить эту проблему?mkdir() не создает каталоги

$ad_title = $_POST['title']; 
$ad_content = $_POST['content-ads']; 
$ad_region = $_POST['region']; 

if (!is_dir("uploads/"$ad_region)) { 
     // dir doesn't exist, make it 
     mkdir("uploads/".$ad_region); 
     echo "directory created!"; 
    } 
    else { 
     echo "directory already exist!"; 
    } 

EDIT: я не знаю, если это имеет значение, но мой файл save.php и добавления папки где коды выше сохраняется в локальном каталоге

localhost/system/modules/new 

Когда Я переместил файл save.php и загрузил папку в каталог

localhost/system/ 

все, кажется, работает сейчас. Но я хочу, чтобы он работал в localhost/system/modules/new directory для лучшей организации. Любая помощь по этому поводу?

ответ

0

Попробуйте дать ему абсолютный путь ..

Вы также отсутствует точка в is_dir; Должно быть !is_dir("uploads/" . $ad_region

+0

Что вы подразумеваете под абсолютным путем? и да, точка на самом деле в моем коде, я просто забыл поставить это здесь. –

0

Вы пропускаете период конкатенации в проверке, если каталог существует

if (!is_dir("uploads/"$ad_region)) { в if (!is_dir("uploads/" . $ad_region)) {

плюс добавить разрешения на mkdir(path, permission, recursive) будет предотвращает головные боли вниз по дороге;

+0

Я уже включил период и разрешение на мой код, я просто забыл поставить это здесь. Все еще не работает. –

0

Обычно, когда каталоги не созданы в веб-приложении, вы имеете дело с разрешениями.

Убедитесь, что пользователь, выполняющий веб-службу (если его Linux обычно является «apache» или «www-data»), позволяет создавать каталоги в том месте, где вы его пытаетесь создать.

+0

Да, я уже проверил это и разрешено создавать каталоги. Но все-таки это не создаст. –

+0

Если вы переместили файл (save.php) и каталог (загружает) в другой каталог, и он «неожиданно» работал, вы либо имеете дело с проблемой разрешения, либо аргумент (ы) функции mk_dir являются неверными. Поэтому, скорее всего, «user1169875» указал вам в правильном направлении с проблемой «абсолютного пути». Если это не так, вы можете захотеть убедиться, что вам не нужен параметр «рекурсивный». Чтобы проверить, разрешено ли вам писать в каталоге, вы можете выполнить следующую команду: sudo -u <пользователь, который запускает webservice> touch testFile '. – Ruben

Смежные вопросы