2012-07-04 141 views
0

我想創建一個文件,並寫在一個文件夾,名爲調試消息:創建一個txt文件失敗,PHP

function debug($report){ 
    $file="/debug/debug.txt"; 
    file_put_contents($file,$report,FILE_APPEND | LOCK_EX); 
} 

調試文件夾在我的根目錄。但文件無法創建..爲什麼?

+3

您是否爲該'debug'文件夾設置了正確的權限? – Lix

+0

檢查權限? – xdazz

+0

檢查權限?並在這裏發佈你的錯誤 – nXqd

回答

2

此代碼將打開全部該文件夾的權限。

chmod('PATH_TO_FOLDER',0777); 

根據您想要使用該文件夾到底該怎麼做,你可能會考慮給它稍微有限的權限,只允許特定的用戶讀/寫它。

下面是PHP手冊採取了一些其他的例子 - http://php.net/manual/en/function.chmod.php

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 

// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 

// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 

// Everything for owner, read and execute for owner's group 
chmod("/somedir/somefile", 0750); 
?> 
+0

是這樣寫的:chmod(' /調試」,0777); –

+0

我很確定你必須通過絕對路徑。嘗試'chmod($ _ SERVER ['DOCUMENT_ROOT']。'/ debug',0777)' – Lix

-1

沒有錯代碼,如果未顯示錯誤,也許是造成PHP配置。 請參閱錯誤報告Error Report

一般來說,可以通過權限引起的(見debug文件夾的權限)

+0

這兩個[錯誤報告](http://stackoverflow.com/questions/11325751/creating-a-txt-file-fails-with -php#comment14909483_11325751)**和** [權限](http://stackoverflow.com/questions/11325751/creating-a-txt-file-fails-with-php#comment14909342_11325751)已被建議。在嘗試回答之前請閱讀帖子。 – Lix

1

這是一個真正的遺囑,以Lix的答案。

最常見的原因是當你在Apache下使用mpd_php5運行你的腳本時,因爲你的php進程將作爲apache UID(www-data或其他)運行。但是,默認情況下,您的調試目錄將由您的帳戶擁有755個權限。

我建議,這是不好的做法,權限設置爲777,因爲這將允許任何人在你的目錄下創建文件,而是暫時權限設置爲777,然後使用問答& d腳本來創建一個debug/logs並將其權限設置爲755,然後將調試目錄返回到755.

您會發現debug/logs目錄現在由Apache UID擁有,並且可以由任何Apache進程寫入。

這裏的一個問題是,您將需要使用腳本來刪除舊的調試文件,因爲您自己的帳戶無權執行此操作。