2015-01-02 3 views
1

Я пытаюсь создать новый каталог в папке с изображениями при отправке письма и пароля, он извлекает идентификатор пользователя и создает папку в папке с изображениями в соответствии с идентификатором пользователя, однако она не работает, как я получаю эту ошибку:mkdir() Файл существует

Warning: mkdir(): File exists in C:\Users\authenticate.php on line 101 

Это то, что я пытался, и это то, что он дает предупреждение на:

// Otherwise, the result variable passes on the confirm-email and the confirm-password to the login function 
       $result = $userVeri->login(strtolower($_POST["confirm-email"]), $_POST["confirm-password"]); 
       // The row variable stores the result 
       $row = $result; 
       // Then make a directory in the images folder with the new user id and give the folder all priveleges 
       mkdir('images/'.$row["id"],0777); 
       exit; 
       // Then display this message 
       echo '<div class="alert alert-success">Congratulations! your account has been created. Please sign in.</div>'; 

ли кто-нибудь понять, что я делаю неправильно?

BTW это дает это предупреждение, даже если их нет, папки, которая существует в папке изображений

+2

выполнил любую базовую отладку, например 'var_dump ($ result)', чтобы увидеть, '$ result ['id']' существует? Если это не так, вы фактически выполняете 'mkdir ('images /')' и (надеюсь), что каталог уже существует, поэтому ошибка на 100% точна. –

+0

Я понятия не имею, что делает ваш метод входа и что он возвращает, но выглядит так: 'row [" id "]' - пустая строка, поэтому mkdir пытается создать каталог images /, и он уже существует. добавьте тест типа (псевдокод) 'if (strlen ($ row [" id "])> 0) mkdir ... else echo" Нет идентификатора найдено "' – Tensibai

+0

где '' $ row ["id"] 'определено? – sodawillow

ответ

2

Используйте РНР is_dir($path_to_dir) для проверки, если каталог существует из ранее. Или вы можете использовать этот код

if (!file_exists($path)) { 
    mkdir($path, 0700); 
} 
+1

Здесь есть условие гонки, так как каталог может быть создан между вызовом 'file_exists()' и 'mkdir()'. – MatsLindh

0
// Otherwise, the result variable passes on the confirm-email and the confirm-password to the login function 
$result = $userVeri->login(strtolower($_POST["confirm-email"]), $_POST["confirm-password"]); 
// The row variable stores the result 
$row = $result; 
// Then make a directory in the images folder with the new user id and give the folder all priveleges 
mkdir(__DIR__.'/images/'.$row["id"],0777); 
// Then display this message 
echo '<div class="alert alert-success">Congratulations! your account has been created. Please sign in.</div>'; 

Я никогда не добавил проверку на успех или не MkDir, ни от значения, возвращаемого методом авторизации. Перепробовал руководство для моей идеи памяти и нашел предпочтительный метод теперь с магической константой __DIR__ вместо этого (который содержит путь к файлу сценария)

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