【问题标题】:Cannot write create file using PHP file_put_contents无法使用 PHP file_put_contents 写入创建文件
【发布时间】:2014-11-01 13:57:45
【问题描述】:

我是整个 php 方面的新手,我需要在服务器(我正在开发 Web 应用程序的我自己的计算机)中编写一个包含一些配置信息的文件。这是我正在使用的代码:

  $filename = "config.conf";
  $db_info = $db_user . "<-*->" . $db_passwd . "<-*->" . $db_name;
  if (file_put_contents($filename,$db_info) === false){
      $ret["error"]  = "Can't create/write: $filename.";
      mysqli_close($con);
      echo json_encode($ret);
      return;   
  }

当我测试我的网络应用程序时,我收到了我写的创建/写入错误。我检查并没有创建文件。我的工作目录在 /var/www/tests 但是我已经检查了测试并且我的用户具有读写权限并且是该文件夹的所有者。如果我使用普通文件资源管理器创建文件,我没有任何问题。由于功能如此简单,我不知所措。请帮忙!

【问题讨论】:

  • 您的用户似乎拥有适当的权限,但是您的用户是否也运行 PHP?在许多 Web 服务器设置中,情况并非如此。
  • PHP 进程可能没有以您的用户身份运行。它可能在 Apache 进程中运行,因此继承了运行 Apache 守护程序 (httpd) 的用户的权限。 (如果您使用的是 Apache,那就是)。
  • 运行php的用户需要读/写权限。因此,如果它以 apache 或 apache2 或 httpd 或其他方式运行,那就是需要写入权限的用户。
  • 与 apache 一起使用时通常是它在 linux 中的 www-data
  • 你使用的那种 conf 格式看起来也很痛苦。您应该将其存储在更便携的东西中,例如 JSON。或者使用数组到 ini 库来写入和 parse_ini_file 来读取。

标签: php file file-permissions


【解决方案1】:

Web 服务器是否具有读/写权限(例如 nginx 使用 www-data 用户)?尝试将要创建该文件的文件夹的权限设置为 777。

【讨论】:

  • 好的,所以我创建了一个新组并添加了我自己和 www-data 用户。没有错误,但现在我不知道文件是在哪里创建的。我以为它会在当前文件夹中创建,但事实并非如此。然而问题得到了回答
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 2018-03-07
  • 2023-03-05
  • 2012-10-16
  • 2014-02-13
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多