php无法创建文件

时间:2018-03-19 20:41:18

标签: php html

我根据this安装了自己的LAMP。我的是Ubuntu 17.10而不是16.04,但我看不出它应该有所作为。

我已根据this设置所有权和权限。

这是我的index.php:

<?php
  if($_POST['statusFormSubmit'] == "Submit")
  {
  alert("in php");
  $varStatus = $_POST['statusInput'];
  alert("$varStatus");
  $path=$_SERVER['DOCUMENT_ROOT'] . '/mydata.csv';
  $fs = fopen($path, "a");
  alert("file $path");
  fwrite($fs, $varStatus . ", " . $varStatus . "\n");
  fclose($fs);
  header("Location: thankyou.html");
  exit;
  }

  function alert($msg) {
    echo "<script type='text/javascript'>alert('$msg');</script>";
}
?>

<html>
  <head >
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title >Form page: status</title>
  </head>
  <body>
    <h1>Your status:</h1>

    <form id='form_status' method='post' action='index.php' >
      <p>
        <input type='text' name='statusInput' maxlength="140" value="<?=$varStatus;?>">
      </p>
      <p>
        <input type='submit' name='statusFormSubmit' value='Submit' />
      </p>
    </form>

  </body>
</html>

和thankyou.html,如果你必须看到它。这里:

<html>
  Thank you for submitting!
</html>

我在浏览器中打开localhost/index.php,我通常使用&#34; asdf&#34;填写该字段,转到感谢页面...但没有创建文件。哪里出错了?

顺便提一下,javascript警报也没有显示出来(我认为他们在其他地方有文件时就这样做了,没有涉及到apache)。对此的任何解释也是受欢迎的。

使用this添加更多调试信息,我得到的路径不存在(正确),不可读也不可写(似乎合乎逻辑)

Warning: fopen(/var/www/html/mydata.csv): failed to open stream: Permission denied in /var/www/html/index.php on line 18
last error: array(4) { ["type"]=> int(2) ["message"]=> string(73) "fopen(/var/www/html/mydata.csv): failed to open stream: Permission denied" ["file"]=> string(23) "/var/www/html/index.php" ["line"]=> int(18) } 

我对路径的权限是(剪切):

$ ll /
drwxr-xr-x  15 root root 4.0K Mar 13 15:32 var/

$ ll /var
drwxr-xr-x  3 root root     4.0K Mar 18 17:01 www/

$ ll /var/www
drwxr-sr-x 2 gauthier www-data 4.0K Mar 22 22:08 html/

我们有了它,该组没有写权限,我猜是apache需要创建该文件。

正确的方法是什么,给g+w?在目录中创建文件?其他

0 个答案:

没有答案