使用PHP / AJAX在后台写入文件

时间:2013-02-11 18:10:51

标签: php ajax output

这一切有点新鲜,但我正在尝试在后台将文件写入服务器上的磁盘时显示网页。我让一个简单的页面加载,然后将AJAX响应发送到第二个脚本,该脚本处理实际的文件操作。我这样做是为了让用户在生成文件时不等待30秒以上加载简单页面,以及尝试避免浏览器超时。写完文件后,我想重定向到它。但是,永远不会创建文件,重定向会直接将您发送到404,尽管AJAX请求始终返回成功的状态代码。

示例

index.php

<html>
  <head>
    <script src="js/jquery-1.8.3.min.js"></script>
  </head>
  <body>
    <script>
      $.ajax({
        url: "out.php",
        method: "get",
        data: { 'answer' : 42 },
        success: function(data, status, jqxhr) {
          alert(jqxhr.responseText);
          $("body").append("<meta http-equiv='refresh' content='0;out.log'>");
        }
      });
    </script>
  </body>
</html>

out.php

<?php
  echo "WHAT IS HAPPENING....";
  $fd = fopen("out.log", "wb");
  fwrite($fd, "Not this... " . $_GET['answer']);
  fclose($fd);
?>
如果我使用out.php运行它,

php-cgi out.php answer=42就像我期望的那样工作,但再次,当通过浏览器访问时,没有任何内容被写入。

有没有办法让out.php创建并写入out.log

1 个答案:

答案 0 :(得分:0)

事实证明,我根本没有权限在我试图使用的目录中写入文件......在chown魔法之后,现在一切都在为我工作。