2013-07-21 43 views
6

我試圖通過fopen()下面創建一個文件一個文件:fopen()函數無法創建Linux上

<?php 
    $handle = fopen('name.txt', 'w') or die('Can\'t create file'); 
    fwrite($handle, 'Hamed'."\n"); 
    fwrite($handle, 'Kamrava'."\n"); 
    echo 'File was created successfully'; 
?> 

,但不創建該文件,並讓我:

Can't create file

PS:

我使用在Linux/Ubuntu的LAMP服務器。

我試過下面的命令創建一個文件之前:

sudo chmod -R 755 ~/public_html/ 

任何想法,將不勝感激。

+1

你確定'〜/的public_html /'是當前工作目錄?你有沒有試過一個絕對文件名? –

+0

@AlexShesterov是的,我很確定工作目錄。關於絕對文件名稱的含義是什麼? –

+0

絕對文件名是'/ path/and/file.name'。但是,如果當前工作目錄設置爲「〜/ public_html /',那麼使用絕對文件名將無濟於事。你同時有一個答案:) –

回答

7

PHP腳本作爲配置的Apache Web服務器的用戶執行。爲了創建文件,該用戶必須具有對您要在其中創建文件的目錄的寫入權限。有兩種方法可以做到這一點:

,您可以給寫權限的目錄中的所有用戶,其中包括任何被配置爲Apache(受用開發機):

chmod o+w ~/public_html/directory_where_you_want_to_write 

或者您可以將目錄的所有權傳遞給Apache用戶。這意味着與您的常規用戶帳戶將不能創建或刪除此目錄中的文件,但除非您也執行上述操作。假設阿帕奇與www-data用戶帳戶運行,像它在默認情況下在Ubuntu,你會怎麼做:

sudo chown www-data ~/public_html/directory_where_you_want_to_write 

(和目錄沒有被public_html下,我只是用它作爲一個例子因爲這似乎是在您的文件。)

+2

你可以把你的用戶放入適當的組('www'?),然後授予組的寫權限。 – glglgl

0

的文件夾必須由Apache用戶因此可以擁有:

sudo chown -R www-data:www-data ~/public_html/ 
0

更改文件夾的權限(在其中您正在試圖創建)的所有權限

sudo chmod 777 
+2

什麼是'ur tring'? –