PHP fputcsv - 没有创建或附加文件

时间:2014-04-01 17:55:06

标签: php forms fputcsv

您好stackoverflow社区!

我需要一些帮助来解决我在哪里出错。

情况:在我正在建设的网站上,我有一个表格,用户填写的名称,食物选择和过敏。我在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>

这是我输出到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);
?>

没有创建或写入文件,当我手动创建文件并将其放在目录中时,它仍然没有写入文件,并且它具有该文件的完全权限。我检查了服务器,它也不是文件锁定问题。

非常感谢任何帮助!让我知道是否还有其他任何我应该写的帮助。

提前致谢!

用答案编辑:

大!感谢Darragh推荐is_writable()函数。这有助于我理解我做了什么,没有权限写作php用户(IIS中的IUSR)。

感谢greg0ire和Spechal提供有关使用错误日志设置进行调试的提示。

答案肯定是一个权限问题,因为我将IUSR作为文件夹根目录的读/写,但是继承被关闭,因此子文件夹和文件没有访问权限。

除了权限问题之外,Spechal提到在编写数据之前将数据破坏是一个很好的(但我的目的不需要,因为fputcsv完成了与逗号分离有关的所有工作),特别是如果你想改变分隔符。

感谢大家的快速和有益的回复!

1 个答案:

答案 0 :(得分:0)

检查以下内容以进行开发:

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

您需要检查以确保您写入的路径实际上是可写的。您也应该使用绝对路径而不是相对路径。

您可能还想在编写之前使用逗号破坏$ currentData。