2014-04-01 33 views
1

嗨stackoverflow社區!PHP fputcsv - 沒有文件創建或追加到

我需要一些幫助,以便我在這裏出錯。

情況:在我正在建設的網站上,我有一個表格,用戶填寫姓名,食物選擇和過敏。我在IIS 7上使用php 5.5,並有一個表單提交給form.php的PHP頁面。一旦他們填寫表單並提交,它會將它們帶到php頁面,表示感謝您提交,等待5秒鐘並將它們返回到上一頁。

我已經證實,張貼值和鍵都聚集沒問題通過輸出他們到變量和呼應在屏幕上,以及使用var_dump($_POST);

這裏是我的表單代碼:

<form action="form.php" method="post"> 
    <p>First Name: <input type="text" name="fname"></p> 
    <p>Last Name: <input type="text" name="lname"></p> 
    <p>Food selection: 
     <select name="food"> 
      <option value="no_selection">---Please Select---</option> 
      <option value="chicken">Chicken</option> 
      <option value="beef">Beef</option> 
      <option value="corn">Corn</option> 
     </select> 
    </p> 
    <p>Allergies:<input type="text" name="allergies"></p> 
    <hr /> 
    <input type="submit" value="Submit" /> 
</form> 

這裏是我的PHP代碼輸出到CSV:

<?php 

    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $fullname = $_POST['fname']." ".$_POST['lname']; 
    $food = $_POST['food']; 
    $allergies = $_POST['allergies']; 

    $currentData = array($fname,$lname,$food,$allergies); 

    $file=fopen('food.csv', 'a'); 
    fputcsv($file, $currentData); 
    fclose($file); 
?> 

沒有文件被創建或寫入,而當我手動創建的文件並把它放在在目錄中它仍然沒有寫入它,它對文件具有完全的權限。我檢查過服務器,它也不是文件鎖定問題。

任何幫助,非常感謝!讓我知道如果還有什麼我應該寫信來幫助。

在此先感謝!

編輯與答案:

太棒了!感謝Darragh轉介is_writable()功能。這幫助我瞭解我做了什麼,沒有像php用戶那樣寫入權限(IIS中的IUSR)。

同時感謝greg0ire和Spechal的關於調試錯誤日誌設置的提示。

答案肯定是一個權限問題,因爲我有IUSR作爲文件夾根目錄的讀/寫,但繼承已關閉,因此子文件夾和文件無法訪問。

在權限問題的頂部,寫之前爆的數據Spechal的提及是好的(但不需要我的目的,fputcsv做了所有與有關逗號分隔的工作),特別是如果你想更改分隔符。

謝謝大家快速和有益的迴應!

+2

您可能設置了不正確的權限。你可以使用'is_writable()'來檢查(並使你的代碼更健壯):http://www.php.net/manual/en/function.is-writable。php –

+0

你是否看到任何錯誤信息?如果沒有,您的PHP安裝配置爲顯示錯誤? – greg0ire

+0

我正在研究'is_writable()'函數,看看是否有助於縮小問題的範圍。 我有php.ini設置爲顯示錯誤,但我上面發佈的php代碼是在''標籤中,它有其他數據打印出來。主要是感謝您提交!段顯示罰款。正如JavaScript代碼5秒後重定向瀏覽器一樣。 – malcojus

回答

0

檢查發展如下:

在php.ini: display_errors = On error_reporting = E_ALL | E_STRICT

你需要檢查,以確保你正在寫的路徑實際上寫。你應該使用絕對路徑而不是相對路徑。

您可能還想在寫入之前用逗號將您的$ currentData內爆。