2010-06-25 64 views
0

我想要動態創建具有完全權限的文件,這意味着會話ID的每個更改都會創建新文件。 不幸的是我遇到了一些問題。在php中動態創建文件的問題

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); 
} 
?> 

你能幫助我嗎? 或者你能告訴別的方法來做這個想法嗎?

回答

0

似乎PHP運行的進程(通常是Web服務器,例如www-data)沒有針對您要在 (例如/home/teamroom/public_html/1/)中創建文件的文件夾的寫入權限。

您還應該對fopen()調用進行錯誤檢查。然後有安全主意想到。

0

您無權訪問目錄。使用php-function chmod ("/somedir/somefile", 755);或通過ftp-client更改目錄權限。 爲什麼你想打開的文件,其中x +,如果你只需要編寫:
模式:
的R - 僅讀取,文件
R +的開端 - 閱讀與寫作,文件
W的開始 - 只有寫作,開始文件
W的+ - 寫作和閱讀,文件
的開頭 - 只寫,文件
A +端 - 寫作和閱讀,文件末尾
X - 創建並以寫入方式打開,開始文件
的x + - 創建並開放閱讀和寫作,開始文件
如果該文件不存在,並且您使用w,w +,a或a +,它將嘗試創建該文件。
我認爲你可以使用W +或A +

併爲您的另一個問題:

<?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函數並使用它的lika字符串。
P.S>對不起,我的英語

+0

感謝您的回覆。 現在的工作,但我面臨另一個問題,我不能從這個文件中讀取 – Nina 2010-06-25 10:40:32

+0

你有喜歡俄羅斯的綽號?;) 行。但是你插入的代碼 - 寫代碼。你想讀取字符串文件嗎? – GOsha 2010-06-25 11:04:23

+0

是的,我想讀寫 – Nina 2010-06-25 11:17:11