2012-11-30 21 views
0

我是一名新的PHP開發人員。我試圖在服務器上編寫一個平面文件,並且我有以下代碼。php fwrite只適用於localhost而非服務器?

<?php 
$myfile= "file1.txt"; 
if(isset($_POST['ta'])){ 
    $newData = nl2br(htmlspecialchars($_POST['ta'])); 
    $handle = fopen($myfile, "w"); 
    fwrite($handle, $newData); 
    fclose($handle); 
} 

if(file_exists($myfile)){ 
    $myData=file_get_contents($myfile); 
} 
?> 

<form action="file.php" method="post"> 
    <textarea name="ta" cols="64" rows="10"><?php echo $myData; ?></textarea> 
    <br/> <br /> 
    <input name="myBtn" type="submit" /> 
</form> 
<br/> 
<br/> 

<?php echo $myData; ?> 

我不明白的是,上述程序如何在本地主機上完美工作,但在實際服務器上什麼也不做?

+4

運行的網絡服務器是什麼用戶?該用戶是否具有對服務器上該目錄/文件的寫入權限? – ultranaut

+0

這是我的學校給學生的服務器,所以是的。我想我是嗎?我如何檢查? – user1865027

+0

你有ssh訪問你的web目錄嗎?如果是這樣,你可以去那裏看看你想寫入的文件和/或目錄的權限。如果沒有,請在代碼中添加一些錯誤處理,並查看它到底發生故障的原因以及原因。我幾乎可以保證,網絡用戶沒有寫入權限。 – ultranaut

回答

0

你需要檢查,看看是否該文件是由Web服務器運行作爲用戶,這可能是像wwwapache什麼的,是從你的用戶不同的可寫 - wjones17或任何爲例。如果您的權限看起來像

-rw-r--r-- 1 wjones17 group  17 Nov 17 20:02 index.php 

那麼你的用戶有權限修改該文件,但其他人不包括Web服務器,因此你的PHP腳本運行作爲wwwapache或什麼的。

就如何解決這個問題而言,您的選擇在共享環境中可能會受到限制,但授予所有用戶完全授權是絕對不好的想法;儘管它可能似乎「解決」了問題,但你只是面臨更大的問題。你可能會問自己是否有另一種方法來實現你想要的,比如使用數據庫。這一切都取決於你的情況以及你想要做什麼。

相關問題