2013-10-02 1 views
0

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

if(file_exists("helloFolder") || is_dir("helloFolder")){ 
    echo "folder already exists"; 
} else { 
    echo "no folder, creating"; 
    mkdir("helloFolder", 0755); 
} 

Это возвращает "no folder, creating" даже если папка уже существует. Тогда я получаю эту ошибку:

Warning: mkdir() [function.mkdir]: No such file or directory in script.php on line 18 

Предупреждение: file_put_contents (/filename.txt) [function.file-пут-содержание]: не удалось открыть поток: Разрешение отказано в script.php на линии 58

Очень странно, что я называю три отдельных сценария, которые делают это, и, хотя он всегда работает, другие два всегда дают эту ошибку. Я вызываю скрипты синхронно, поэтому я не думаю, что происходит перекрытие. Все остальное между ними одинаково. У всех есть разрешения 644, все папки имеют разрешение 755.

+1

веб-корневой каталог! == корневой каталог файловой системы –

ответ

4

Прежде всего, вы должны придерживаться абсолютных пластырей при работе с FileSystem, а также есть две небольшие недостатки:

  • is_dir() - Проверяет, существует ли файл и его каталог. Поэтому file_exists() является излишним.

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

И, наконец, ваш код должен выглядеть так,

$target = dirname(__FILE__) . '/hellodir'; 

if (is_dir($target)) { 

    echo "folder already exists"; 

} else { 

    echo "no folder, creating"; 
    // The 3-rd bool param includes recursion 
    mkdir($target, 0777, true); 
} 

Это будет работать, как ожидалось.

2

Попробуйте этот код для создания папки, если папка не существует там:

<?php 

if (file_exists('path/to/directory')) { 
    echo "Folder Already Exists"; 
} 
else{ 
    mkdir('path/to/directory', 0777, true); 
    echo "folder Created"; 
} 
?> 
Смежные вопросы