2013-05-08 152 views
1

我已經在這裏探討並從相關論壇中獲取了一些技巧,但仍然無法清除我的問題,所以我發佈它善意幫助我。謝謝大家。file_put_contents(filepath/file)[function.file-put-contents]:無法打開流:權限被拒絕

我有共享的Linux主機,最近他們提供了升級,我接受。不幸的是,他們聲稱我的PHP應用程序應該很好地調整到PHP 5.3版本。我的這個應用程序在早期的服務器php版本5.2中工作得很好。問題是當我嘗試註冊登錄或註銷歷史或ANY這樣的文件寫入時,文件權限被拒絕錯誤。我強調了以下代碼,因爲它是遇到示例的第一個錯誤。這是我的示例代碼。

我特別使用file_put_contents和file_read_contents。以下是我的示例代碼。

// define('DATA_PATH_MEMB', dirname(__FILE__) ."/../docs/vendor/"."data/_memdata/"); 
// above constant is an include file 
function updateLogins() { 
    $user = $_SESSION['thisuserName']; 
    $filejsonread = DATA_PATH_MEMB.$user.".dat"; 
    $filejsonwrite = DATA_PATH_MEMB.$user.".dat"; 
    $updateDataArr = json_decode(file_get_contents($filejsonread),true); 
    $timenow = array("datetimestamp" => date("d-m-Y h:i")); 
    array_push($updateDataArr["useracess"][0]["history"]["logins"], $timenow); 
    array_push($updateDataArr["useracess"][0]["history"]["logouts"], $timenow); 
    file_put_contents($filejsonwrite, json_encode($updateDataArr), LOCK_EX);  
} 

我獲得以下錯誤指向file_put_contents作爲

file_put_contents(/家/ MYDOMAIN /的public_html /包括/../文檔/ GBO /數據/ _memdata/someusr.dat)功能。文件提出,內容]:未能打開流:權限被拒絕

我問他們,如果我的用戶帳戶,該文件被分配到具有寫權限組的一部分。我的目錄是755,我的文件是644,並且在以前的服務器中,我的應用程序正常工作。如果不能寫入任何文件,我不知道該怎麼辦。

我想這

echo exec('whomai'); // it displays nobody 

我是一個程序員沒有管理員。我應該問他們什麼或糾正自己。

回答

0

的文件有,

-rw-r--r-- (644) — Only the owner has read and write permissions; the group and others can read only. 

此權限狀態意味着文件的所有者具有寫權限,但不是其他任何人。當您嘗試寫入此文件的PHP文件以與您的用戶名不同的用戶身份運行時。

因此,錯誤,Apache無法寫在這個文件上。但是,如果你ssh到您的服務器和vi -file。您將能夠毫無問題地編寫該文件。

解決方案:

給Apache寫這個文件的權限。 chown這個文件並給予Apache所有權。

+0

謝謝你的幫助。我真的很感激。這樣我的應用程序即時創建和更新文件。一旦他們承擔責任,我會復出並接受你的回答。 – user2362464 2013-05-09 02:03:26

+0

不幸的是,我的服務器人不接受,但我和你一起去。 – user2362464 2013-05-09 11:12:25

+0

因此,我是否正確回答了您的問題......因爲如果此答案不正確,則完全可以。但是,從我作爲系統管理員和程序員的經驗來看。我可以說你的問題必須是我解釋的問題。順便說一句。感謝您接受我的回答。 – doNotCheckMyBlog 2013-05-09 11:47:54

0

如果您將強制設置爲激活,這可能是一個問題。

嘗試(在Linux的shell): [根@*]#setenforce 0

解決了這個問題對我來說。

相關問題