2010-03-31 6 views
1

Я пытаюсь либо создать файл, который не существует, либо записать в файл, который уже делает.fopen создать новый файл, который не существует

в файле PHP Я пытаюсь это:

$ File = FOPEN ("data.txt", "а");

fwrite ($ file, "\ n". $ Name); fwrite ($ file, ",". $ Lastname);

fwrite ($ file, ",". $ Email);

fclose ($ file);

Я запускаю Apache под окнами Xp и не повезло, что файл «data.txt» создается. Документы говорят, что добавление параметра должно создать файл с именем, указанным в первом параметре (data.txt). что я здесь делаю?

Заранее спасибо Undersound

ответ

1

Вы ищете в этот каталог сценарий также считает, что это ток один? Имеет ли ваш апач-процесс разрешение на запись? В журнале ошибок упоминается какая-либо неисправная команда?

+0

Hey Konrad Neuwirth, Спасибо за ваш ответ. Вы просматриваете этот каталог, сценарий также считает его актуальным? Не знаю, как работает функция, я ожидаю, что она будет искать текущий каталог Как проверить, есть ли у меня права на запись, я запускаю сервер localhost Apache под Windows XP и не имею никакого опыта с этим. Журнал ошибок/журнал Acces ничего не говорит – 2010-03-31 23:39:45

+0

Вы можете получить текущий рабочий каталог скрипта с помощью 'getcwd()'. Кроме того, вы должны проверить 'if ($ file === FALSE) {etc ...}' после вызова fopen(). Если скрипт не может открыть файл по какой-либо причине, он возвращает false. –

0

Помните, что файл создан в каталоге, в котором запущен основной поток процесса. Это означает, что если «основная» программа находится в A/и включает в себя файл функций из функции B/a в B, которая создает файл в «.». создает его в A/не в B/

Кроме того, нет необходимости вызывать функцию FWRITE 3 раза, вы можете сделать

fwrite($file, "\n" . $name . ", " . $lastname . ", " . $email); 
+1

И вы можете написать это как

 fwrite($file,"\n$name, $lastname, $email"); 

3

Давайте добавим некоторые тесты и вывод отладки кода

echo 'cwd is: ', getcwd(), "<br />\n"; 
echo 'target should be: ', getcwd(), "/data.txt <br />\n"; 
echo 'file already exists: ', file_exists('data.txt') ? 'yes':'no', "<br />\n"; 

$file = fopen("data.txt", "a"); 
if (!$file) { 
    die('fopen failed'); 
} 
$c = fwrite($file, "\n$name,$lastname,$email"); 
fclose($file); 
echo $c, ' bytes written'; 
0

Если добавление к уже существующему файлу data.txt работает, но не создает файл, который еще не существует, это скорее всего означает, что разрешения на файлы разрешают запись в него, но папка, в которой находится файл, не принадлежит Apache, и поэтому он не может создавать файлы там.

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