2014-10-07 145 views
2

我對CentOS的一個的Apache HTTP服務器,我安裝了PHP(yum install php),然後測試了一個簡單的腳本,在文件中寫入文本,所以我做PHP不能寫入文件

$file = fopen($filename,"w") or die("Failure"); 

的問題是即使在該目錄中執行了chown apache:apache /var/www/html/*chmod 777 *之後,它總是失敗,所以任何人都知道如何理解/解決此問題?

編輯:所以有問題是thath目錄本身did'nt有CHOWN

+0

你可以嘗試在目錄中創建一個文件嗎?這應該隔離它是否存在權限問題或編碼問題。# – ryekayo 2014-10-07 17:10:44

+2

#1包括您的代碼。 #2你有沒有佔用SELinux? – miken32 2014-10-07 17:14:04

+0

你正在創建你的文件並在該目錄或'/ var/www/html /'的子目錄中運行你的腳本嗎? – jeroen 2014-10-07 17:14:14

回答

0

下進行更改模式,W + - 這將允許PHP,如果不是存在,創建文件。

$file = fopen($filename,"w+") or die("Failure"); 
+0

所以'w',請參閱http://php.net/manual/en/function.fopen.php – jeroen 2014-10-07 17:16:41

+1

PHP將嘗試以模式w創建它。 w和w +之間的區別在於w +打開了閱讀和書寫。 – Laereom 2014-10-07 17:17:38

4

很難說沒有來自PHP的實際錯誤消息。

看一看這個頁面:

http://www.w3schools.com/php/php_error.asp

長話短說,創建並設置自定義錯誤處理程序,就像這樣:

<?php 
//error handler function 
function customError($errno, $errstr) { 
    echo "<b>Error:</b> [$errno] $errstr"; 
} 

//set error handler 
set_error_handler("customError"); 

//trigger error 
$file = fopen($filename,"w") 
?> 

在你的情況,我認爲,在爲了能夠在給定的目錄中創建新文件,你需要爲chmod或chown添加一個'-R'標誌,並且在目錄本身而不是孩子上調用它 - 這樣,如果PHP必須創建文件,它有權這樣做。

編輯:只是好奇爲什麼這有一個downvote-什麼是「極其草率,沒有努力消耗的帖子,或答案是明確的,也許是危險的不正確。」?我告訴OP檢查錯誤消息並以正確的遞歸方式設置他們的權限。