【问题标题】:file_put_contents(filepath/file) [function.file-put-contents]: failed to open stream: Permission deniedfile_put_contents(文件路径/文件)[function.file-put-contents]:无法打开流:权限被拒绝
【发布时间】:2013-05-03 07:56:48
【问题描述】:

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

我共享了 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 

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

【问题讨论】:

    标签: php linux file-io


    【解决方案1】:

    文件有,

    -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 所有权。

    【讨论】:

    • 感谢您的帮助。我真的很感激。因此,我的应用程序会即时创建和更新文件。一旦他们有义务,我会回来接受你的回答。
    • 很遗憾,我的服务员不接受,但我和你一起去。
    • 那么,我是否正确回答了您...因为如果此答案不正确,那完全可以:)。但是,根据我作为系统管理员和程序员的经验。我可以说您的问题必须是我解释的问题。顺便提一句。感谢您接受我的回答。
    • 我还是卡住了。我的新 php 5.3.4 设置 Apache Handler PHP 配置用户/组设置是虚拟主机提供商提供的“无人”,他们说 Apache 像“无人”一样运行是正常的。但是我的应用程序失败并继续收到 Permission Denied 的错误。我只有 CPanel 访问权限,我不知道如何授予 Apache 对我的帐户的写入权限,以便我的 php 应用程序可以写入文件。请帮忙。
    • 我很乐意提供帮助,但我无权访问您的服务器。为了练习这些技巧,我在 Amazon AWS 开设了一个免费帐户,并创建了一个 linux 盒子进行练习。我建议你也这样做。我是我自己的开发人员......但我想学习一点系统管理员。我建议你也一样:)。一旦您在 AWS 上设置 Linux 并开始使用……与您的系统管理员人员交流会很容易。希望这会有所帮助
    【解决方案2】:

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

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

    帮我解决了。

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2014-06-25
      • 2018-04-25
      • 2022-09-22
      相关资源
      最近更新 更多