嗨,堆叠溢出社区!
我需要一点帮助,知道我在哪里出了问题。
情境:在我正在建设的一个网站上,我有一个表格的部分,用户填写的名称,食物选择和过敏。我在IIS 7上使用php5.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>下面是输出到CSV的PHP代码:
<?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);
?>没有创建或写入任何文件,当我手动创建该文件并将其放在dir中时,它仍然不会写入该文件,并且它对该文件具有完全的权限。我已经检查了服务器,这也不是文件锁问题。
任何帮助都是非常感谢的!如果还有什么需要我写信帮忙的话,请告诉我。
提前感谢!
用答案编辑:
太棒了!感谢Darragh对is_writable()函数的推荐。这帮助我理解了我作为php用户(IIS中的IUSR)所做的和没有权限写入的内容。
还感谢greg0ire和Spechal关于使用错误日志设置进行调试的技巧。
答案肯定是权限问题,因为我将IUSR作为文件夹根的读/写,但是继承被关闭,因此子文件夹和文件无法访问。
除了权限问题之外,Spechal还提到在编写数据之前将数据内爆,这是一个很好的方法(但对于我来说并不是必需的,因为fputcsv完成了与逗号分离有关的所有工作),特别是如果您想要更改分隔符。
感谢大家的快速和有益的回应!
发布于 2014-04-01 18:14:32
关于开发,请检查以下内容:
在php.ini:display_errors = On error_reporting = E_ALL | E_STRICT中
您需要检查以确保您要写入的路径实际上是可写的。您应该使用绝对路径而不是相对路径。
您还可能希望在编写$currentData之前用逗号将其内爆。
https://stackoverflow.com/questions/22793288
复制相似问题