我想創建一個文件,並寫在一個文件夾,名爲調試消息:創建一個txt文件失敗,PHP
function debug($report){
$file="/debug/debug.txt";
file_put_contents($file,$report,FILE_APPEND | LOCK_EX);
}
調試文件夾在我的根目錄。但文件無法創建..爲什麼?
我想創建一個文件,並寫在一個文件夾,名爲調試消息:創建一個txt文件失敗,PHP
function debug($report){
$file="/debug/debug.txt";
file_put_contents($file,$report,FILE_APPEND | LOCK_EX);
}
調試文件夾在我的根目錄。但文件無法創建..爲什麼?
此代碼將打開全部該文件夾的權限。
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);
?>
是這樣寫的:chmod(' /調試」,0777); –
我很確定你必須通過絕對路徑。嘗試'chmod($ _ SERVER ['DOCUMENT_ROOT']。'/ debug',0777)' – Lix
沒有錯代碼,如果未顯示錯誤,也許是造成PHP配置。 請參閱錯誤報告Error Report。
一般來說,可以通過權限引起的(見debug文件夾的權限)
這兩個[錯誤報告](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
這是一個真正的遺囑,以Lix的答案。
最常見的原因是當你在Apache下使用mpd_php5運行你的腳本時,因爲你的php進程將作爲apache UID(www-data
或其他)運行。但是,默認情況下,您的調試目錄將由您的帳戶擁有755個權限。
我建議,這是不好的做法,權限設置爲777,因爲這將允許任何人在你的目錄下創建文件,而是暫時權限設置爲777,然後使用問答& d腳本來創建一個debug/logs
並將其權限設置爲755,然後將調試目錄返回到755.
您會發現debug/logs
目錄現在由Apache UID擁有,並且可以由任何Apache進程寫入。
這裏的一個問題是,您將需要使用腳本來刪除舊的調試文件,因爲您自己的帳戶無權執行此操作。
您是否爲該'debug'文件夾設置了正確的權限? – Lix
檢查權限? – xdazz
檢查權限?並在這裏發佈你的錯誤 – nXqd