2013-03-05 76 views
0
<? 
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操作不起作用。该文件的权限如下:PHP文件操作

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

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

上面的代码工作时,我手动删除该文本文件,然后将文件权限为777

任何帮助,应该理解!

+3

如果您没有足够的权限或其目录开始,您不能'chmod'文件。事先通过FTP/SSH进行。 ''file_put_contents()'为了简洁起见。 – mario 2013-03-05 23:37:28

+1

您的网络服务器可能不以root身份运行,而root是唯一具有写入权限的网站服务器。为什么你要在txt文件中存储密码明文? – 2013-03-05 23:39:57

+1

如果你手动删除文件,那么运行这个脚本,谁拥有password.txt的权限? – landons 2013-03-05 23:43:12

回答

2

该脚本归root所有,只能由所有者书写。这意味着比其他任何人都可以更改其权限root。您必须sudo chownsudo chmod并手动更改文件的所有者或权限。

+0

如果脚本属于root,那么它将能够写入文件... – landons 2013-03-05 23:41:23

+0

@landons实际上脚本所有者并不重要。 PHP将不得不在命令行上以root身份运行,否则必须在根目录下运行apache才能写入文件。脚本所有者与脚本权限或其运行的帐户无关。 – 2013-03-05 23:46:42

+0

是的,我错过了。如果脚本被root运行* – landons 2013-03-05 23:49:24