2015-04-27 3 views
-1

Я следовал руководство для создания нового файла в PHP и я использую следующий код:Ошибка fopen для создания нового файла?

function create($user, $name) { 
 
\t \t /* Later on, this will connect to another server*/ 
 
\t \t $dir = $user->getFolder() . "/Projects/". $name; 
 
\t \t if(file_exists($dir)) { 
 
\t \t \t $this->error = "Directory: " . $dir . " already exists."; 
 
\t \t } else { 
 
\t \t \t mkdir($dir); 
 
\t \t \t //Create the users.json file and add the owner 
 
\t \t \t $json = fopen($dir . "/Data/users.txt", "w") or die("Cannot open file"); 
 
\t \t \t fclose($json); 
 
\t \t } 
 
\t }

каталог получает создан, но я получаю следующее сообщение об ошибке: «Warning: Еореп (Jake/UserFolder // Projects/test/Data/users.txt): не удалось открыть поток: нет такого файла или каталога в D: \ xampp \ htdocs \ Collabs \ Objects \ Scripts \ Project.php в строке 14 Не удается открыть file "

ответ

1

Путь, указанный в вашей ошибке, выглядит так может быть проблемой.

Jake/UserFolder//Projects/test/Data/users.txt

Существует два слэша между UserFolder и проектами. Это похоже на изменение кода на

$dir = $user->getFolder() . "Projects/". $name; 

Избавьтесь от дополнительной косой черты.

+0

Omg. Вау, я не могу поверить, что сделал это. Спасибо огромное! –

+0

Помогло ли это решить проблему? Мне пришло сообщение после ответа, что, похоже, этот путь вызвал бы проблемы с «mkdir», и вы сказали, что это работает. –

+0

Он сделал это, и впоследствии я заметил, что «/ Data /» не был создан ... lol, так что это было то, что я нашел и что вы нашли –

0

Несколько вещей, которые могли бы пойти не так:.

  1. Вы не прошли путь с ведущим /, так fopen() будет искать относительно директории скрипта, выполняющегося в Я предполагаю, что вы будете хочу передать абсолютному пути
  2. вы тестируете для file_exists(), вы должны также проверить is_dir(), чтобы перехватывать и обрабатывать случаи, когда файл с тем же путем уже существует
  3. вы могли бы рассмотреть вызов mkdir($dir, 077, true) для создания Провайдеры (см. mkdir() documentation)
Смежные вопросы