【问题标题】:PHP File operationsPHP 文件操作
【发布时间】:2013-03-05 23:36:03
【问题描述】:
<?
if(isset($_POST['Submit']))
{
   $password=$_POST['newpwd'];
   if(!empty($password))
   {
    $old_file = "password.txt";
    chmod($old_file,0777);
    $fh = fopen($old_file, 'w') or die("Can't open file");
    fwrite($fh,$password);
    fclose($fh);
    header("location:index.php");
  }
  else
  {
    echo "Please enter a valid password!";
  }
}
?>

以上代码用于重置密码。更改密码时出现“无法打开文件”错误。 chmod 操作也不起作用。文件权限如下:

-rwxr-xr-x 1 root root    4 Mar  5 13:55 password.txt

我尝试取消链接以删除文本文件,它也失败了。

当我手动删除文本文件,然后将文件权限设置为 777 时,上述代码有效。

应感谢任何帮助!

【问题讨论】:

  • 如果您对文件或其目录没有足够的权限,则不能chmod。事先通过 FTP/SSH 执行此操作。还有file_put_contents() 为简洁起见。
  • 您的网络服务器可能没有以 root 身份运行,并且 root 是唯一具有写入权限的服务器。为什么要将密码明文存储在 txt 文件中?
  • 如果手动删除文件,然后运行这个脚本,谁对password.txt有权限?

标签: php file fopen fwrite chmod


【解决方案1】:

该脚本归root 所有,只能由所有者写入。这意味着除了root 之外没有其他人可以更改其权限。您必须sudo chownsudo chmod 并手动更改文件的所有者或权限。

【讨论】:

  • @landons 实际上脚本所有者并不重要。 PHP 必须在命令行上以 root 身份运行,或者 apache 必须在 root 下运行才能访问以写入文件。脚本所有者与脚本权限或运行脚本的帐户无关。
  • @landons 我假设 PHP 不以 root 身份运行。这太疯狂了。
  • 我误解了你所说的“脚本归root所有”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 2017-04-28
  • 2012-03-24
相关资源
最近更新 更多