проблема с созданием файла динамически в php - PullRequest
0 голосов
/ 25 июня 2010

Я хочу динамически создавать файл с полным разрешением, то есть при каждом изменении идентификатора сеанса создавать новый файл.К сожалению, я столкнулся с некоторой проблемой.

Warning: fopen(test.txt) [function.fopen]: failed to open stream: Permission denied in /home/teamroom/public_html/1/3.php on line 2

Warning: fwrite(): supplied argument is not a valid stream resource in /home/teamroom/public_html/1/3.php on line 3

Warning: fclose(): supplied argument is not a valid stream resource in /home/teamroom/public_html/1/3.php on line 4

код:

<?php
session();
$member_Id=$_SESSION['user_id'];
if (isset($member_Id)){
$file = fopen("test.txt","x+");
fwrite($file,"test");
fclose($file);
}
?>

Вы можете мне помочь?или вы можете сказать другой способ сделать эту идею?

Ответы [ 2 ]

0 голосов
/ 25 июня 2010

у вас нет прав доступа к каталогу. Используйте php-функцию chmod ("/somedir/somefile", 755); или измените права доступа к каталогу с помощью ftp-клиента. И почему вы пытаетесь открыть файл с помощью x +, если вам нужно только написать:
Режимы:
r - только чтение, начало файла
r + - чтение и запись, начало файла
w - только запись, начало файла
w + - Запись и чтение, начало файла
a - Только запись, конец файла
a + - Запись и чтение, конец файла
x - Создать и открыть только для записи, начало файла
x + - Создать и открыть для чтения и записи, начало файла
Если файл не существует и вы используете w, w +, a или a +, он попытается создать файл.
Я думаю, что вы можете использовать W + или +

И для вашей другой проблемы:

<?php
$fp = fopen ('/path/to/file', "r");
while (!feof ($fp))
{
    $value = fgets($fp);
    if(!empty($value))
    { 
       //Here do what you want with your value
    }
}
?>

Это был строковый код чтения. Также вы можете использовать file_get_contents(); php-функцию и работать с ней как строка.
P.S> Извините за мой английский

0 голосов
/ 25 июня 2010

Может показаться, что процесс, запущенный PHP, так как (часто веб-сервер, например, www-data) не имеет прав записи для папки, в которой вы пытаетесь создать файл. (например, /home/teamroom/public_html/1/).

Вы также должны выполнять проверку ошибок при вызове fopen(). Тогда нужно подумать о безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...