2013-09-24 3 views
0
$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!"; 
} 

Я создаю сайт, и сейчас я его разрабатываю в локальном хосте. Мой save.php файл и добавления папки где коды выше сохраняются в локальном каталогеИспользование mkdir(), каталог не создается

localhost/system/modules/new/ 

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

localhost/system/ 

все, кажется, работает сейчас. Но я хочу, чтобы это работало в

localhost/system/modules/new/ 

каталог для лучшей организации. Любая помощь в том, как заставить его работать?

+1

Можете ли вы описать, как это * не работает *? – Phil

+0

@Phil: он не будет создавать каталоги в папке uploads в этом каталоге. Localhost/system/modules/new/ –

ответ

0

Первое, что я сделал бы, это убедиться, что пути - это то, где вы думаете.

Попробовать это

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

// Make sure the "uploads" directory is relative to this PHP file 
$uploads = __DIR__ . '/uploads'; 

$path = $uploads . DIRECTORY_SEPARATOR . $ad_region; 

// ensure that the path hasn't been tampered with by entering any relative paths 
// into $_POST['region'] 
if (dirname($path) !== $uploads) { 
    throw new Exception('Upload path has been unacceptably altered'); 
} 

if (!is_dir($path)) { 
    if (!mkdir($path, 0755, true)) { 
     // you should probably catch this exception somewhere higher up in your 
     // execution stack and log the details. You don't want end users 
     // getting information about your filesystem 
     throw new Exception(sprintf('Failed to create directory "%s"', $path)); 
    } 

    // Similarly, you should only use this for debugging purposes 
    printf('Directory "%s" created', $path); 
} else { 
    // and this too 
    printf('Directory "%s" already exists', $path); 
} 
+0

Спасибо! Теперь работает. Как вы думаете, в чем причина проблемы? –

+0

@AnnaGee Единственное * реальное * изменение, которое я сделал, заключалось в том, чтобы ваша папка 'uploads' была относительно PHP-скрипта, используя константу' __DIR__' в качестве префикса пути. Это и использование рекурсивной опции для 'mkdir' – Phil

0

вы можете использовать относительный путь ../, такие как mkdir("../uploads/".$ad_region)

или использовать путь Absolution, такие как mkdir("/localhost/system/modules/new/".$ad_region)

исх: http://php.net/manual/en/function.mkdir.php

+0

все еще не работает для меня. –

+0

любой результат? который вы попробовали? –

+0

обе. он не произведет никакой ошибки, но он также не создаст папки. Он просто продолжает печатать "каталог создан!" но нет каталогов, созданных при проверке папки uploads. Я уже проверил, разрешено ли писать в этом каталоге. но все равно это не сработает. –

0

Вы можете использовать абсолютные пути к файлам, как «/ Var/WWW/system/modules/new/$ ad_region "(структура unix).

Или, например, если ваш save.php файл находится в директории «системы», и вы хотите создать каталог в «системных/модулей/новый /» вы можете сделать

mkdir("./modules/new/$ad_region"); 

Существует третий параметр для mkdir, рекурсивный, что позволяет создавать вложенные каталоги. Для второго параметра вы можете просто пройти 0, например

mkdir("./modules/new/$ad_region", 0, true); 
Смежные вопросы