嗨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做了所有與有關逗號分隔的工作),特別是如果你想更改分隔符。
謝謝大家快速和有益的迴應!
您可能設置了不正確的權限。你可以使用'is_writable()'來檢查(並使你的代碼更健壯):http://www.php.net/manual/en/function.is-writable。php –
你是否看到任何錯誤信息?如果沒有,您的PHP安裝配置爲顯示錯誤? – greg0ire
我正在研究'is_writable()'函數,看看是否有助於縮小問題的範圍。 我有php.ini設置爲顯示錯誤,但我上面發佈的php代碼是在'
'標籤中,它有其他數據打印出來。主要是感謝您提交!段顯示罰款。正如JavaScript代碼5秒後重定向瀏覽器一樣。 – malcojus