我正在使用 PHP 脚本来处理来自 Flash 应用程序的表单数据。这是代码:
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
// create the target directory if it doesn't exist //
$dir = ($_GET['destination']) ? $_GET['destination'] : 'images';
if (!file_exists($dir)) mkdir($dir, 0777, true);
// write the file to the target directory //
$fp = fopen($dir.'/'.$_GET['filename'], "wb" );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose( $fp );
}
else{
echo('file data not received');
}
?>
正在写入的文件是图像,原始数据由 Flash 应用程序发送。共有三个版本的 Flash 应用程序都由同一块 PHP 处理。其中两个处理得很好;第三个将正确处理大约两次左右,然后我开始在日志中收到此错误:
[2013 年 5 月 17 日星期五 17:19:56] [错误] [客户端 172.251.78.205] ModSecurity:读取请求正文时出错:对等点重置连接 [主机名“客户端 URL”] [uri“/flash/php/saveImage.php” ] [unique_id "UZbJGmFKGIcAAB37ctwAAABO"]
从我收集到的信息来看,这意味着客户端连接在表单数据发送完成之前就超时了。另一件事是,如果我手动删除存储图像的目录并让脚本创建它每次都会工作。几个小时以来,我一直把头撞在桌子上。谁能提供一些关于发生了什么以及我如何解决这个问题的见解?如果需要更多信息,请告诉我,我会为您提供您可能需要的任何信息。提前致谢。
我试过使用 set_time_limit(0); 和忽略用户中止(真);但似乎都没有任何效果。