1

我在这里的相关论坛中探索并采取了一些技巧,但我仍然无法解决我的问题,所以我发布它,请帮助我。谢谢大家。

我共享了 linux 主机,最近他们提供了升级,我接受了。不幸的是,他们声称我的 php 应用程序应该微调到 php 版本 5.3。我的这个应用程序在 php 5.2 版的早期服务器中运行良好。当我尝试注册登录或注销历史记录或任何此类文件写入时,问题是文件权限被拒绝错误。我突出显示了以下代码,因为它是遇到 sample 的第一个错误。这是我的示例代码。

我专门使用 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(/home/mydomain/public_html/includes/../docs/gbo/data/_memdata/someusr.dat)[function.file-put-contents]:无法打开流:权限被拒绝

我问他们我的用户帐户是否属于文件分配给具有写权限的组的一部分。我的目录是 755,我的文件是 644,并且在早期的服务器中,我的应用程序真诚地工作。如果无法写入任何文件,我不知道该怎么办。

我试过这个

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

我是程序员而不是管理员。我应该问他们什么或纠正自己。

4

2 回答 2

0

如果您将强制设置为活动,这可能是一个问题。

尝试(在你的 Linux shell 上): [root@ * ]# setenforce 0

为我解决了。

于 2013-10-21T11:12:25.283 回答
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 所有权。

于 2013-05-08T23:11:58.833 回答