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

使用PHP/AJAX在后台写入文件,php,ajax,output,Php,Ajax,Output,这有点新鲜,但我尝试在后台将文件写入服务器磁盘时显示网页。我先加载一个简单的页面,然后向第二个脚本发送一个AJAX响应,该脚本处理实际的文件操作。我这样做是为了在生成文件时,用户不会等待30秒以上的时间来加载一个简单的页面,也不会试图避免浏览器超时。一旦文件被写入,我想重定向到它。然而,该文件永远不会被创建,重定向会直接将您发送到404,尽管AJAX请求总是返回一个成功的状态代码 示例 index.php <html> <head> <script sr

这有点新鲜,但我尝试在后台将文件写入服务器磁盘时显示网页。我先加载一个简单的页面,然后向第二个脚本发送一个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>
<?php
  echo "WHAT IS HAPPENING....";
  $fd = fopen("out.log", "wb");
  fwrite($fd, "Not this... " . $_GET['answer']);
  fclose($fd);
?>
如果我使用
php cgi out.php answer=42运行它,
out.php
的工作原理与我预期的一样,但同样,当通过浏览器访问时,不会写入任何内容


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

结果是我根本没有权限在我试图使用的目录中写入文件。。。经过一点
chown
magic之后,我现在一切都正常了。

如果你打开浏览器localhost/your_project/out.php?答案=42,有什么作用吗?哎呀,不知道我为什么不想试试。。。不,它不写文件。开始认为它与权限有关(目前目录和文件不属于apache.apache)。但是,过去我可以使用输出缓冲在没有这些权限的情况下将内容写入磁盘。我会试一试,然后再报告。权限…你是在Linux风格的环境中吗???我也很怀念XD