2013-05-08 106 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

解决了这个问题对我来说。

相关问题