2013-03-05 92 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