HTTP 500 中文释义:服务器拒绝响应
对于 php 网站,多半是因为程序出错而错误显示功能未打开。swfupload 都带有调试功能,你只需打开 php 的错误输出和 swfupload 的调试功能,就可以看到问题的所在
对于 php 网站,多半是因为程序出错而错误显示功能未打开。swfupload 都带有调试功能,你只需打开 php 的错误输出和 swfupload 的调试功能,就可以看到问题的所在
调试欢乐多
可以肯定不是PHP 代码有错误。因为,比如我上传一个4M的文件正常,但是5M的就会报错,因为5M的耗时长一些。
swfupload debug开启显示的也是500错误
memory_limit 200M
上传的文件一般小于10M
error_reporting(E_ALL),这个也开了。没有出现什么错误信息。
超时、内存溢出都不是程序的错,但还是错啊
你还需有 print_r($_FILES); 观察上传文件信息
file_put_contents('xxx.txt',var_export($_FILES, true));
我把这一句放在upload.inc.php的最前面。也没有任何文件产生。因为是FLASH上传,所以print_r不行吧我看了一下phpinfo,也都对
file_put_contents('xxx.txt',var_export($_FILES, true));
也没有xxx.txt文件产生。
上传成功的时候,
file_put_contents('xxx.txt',var_export($_FILES, true));
有xxx.txt文件产生。
不要想当然!
error_reporting(E_ALL) 的意思是检查一切错误
display_errors = On 是打开错误显示功能(php.ini)
不打开错误显示功能,则一旦出现错误就会是 500开启 swfupload debug 功能后,所用服务端输出的信息都会展现在浏览器中
会有类似这样的显示
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>SWFUpload Demos - Simple Demo</title>
<link href="../css/default.css" rel="stylesheet" type="text/css" />
<script src=/scripts/json2.js></script>
<script type="text/javascript" src="../swfupload/swfupload.js"></script>
<script type="text/javascript" src="../swfupload.js"></script>
<script type="text/javascript" src="js/swfupload.queue.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>
<script type="text/javascript">
var swfu; window.onload = function() {
var settings = {
// flash_url : "../swfupload/swfupload.swf",
flash_url : "../swfupload.swf",
upload_url: "upload.php",
post_params: {"PHPSESSID" : "<?php echo session_id(); ?>"},
file_size_limit : "100 MB",
file_types : "*.*",
file_types_description : "All Files",
file_upload_limit : 100,
file_queue_limit : 0,
custom_settings : {
progressTarget : "fsUploadProgress",
cancelButtonId : "btnCancel"
},
debug: true, // Button settings
button_image_url: "images/TestImageNoText_65x29.png",
button_width: "65",
button_height: "29",
button_placeholder_id: "spanButtonPlaceHolder",
button_text: '<span class="theFont">Hello</span>',
button_text_style: ".theFont { font-size: 16; }",
button_text_left_padding: 12,
button_text_top_padding: 3,
// The event handler functions are defined in handlers.js
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError_1,
upload_success_handler : uploadSuccess_1,
upload_complete_handler : uploadComplete,
queue_complete_handler : queueComplete // Queue plugin event
}; swfu = new SWFUpload(settings);
};
function uploadSuccess_1(d) {alert(JSON.stringify(d))}
function uploadError_1(d) { alert(d)}
</script>
</head>
<body>
<div id="header">
<h1 id="logo"><a href="../">SWFUpload</a></h1>
<div id="version">v2.2.0</div>
</div><div id="content">
<h2>Simple Demo</h2>
<form id="form1" action="index.php" method="post" enctype="multipart/form-data">
<p>This page demonstrates a simple usage of SWFUpload. It uses the Queue Plugin to simplify uploading or cancelling all queued files.</p> <div class="fieldset flash" id="fsUploadProgress">
<span class="legend">Upload Queue</span>
</div>
<div id="divStatus">0 Files Uploaded</div>
<div>
<span id="spanButtonPlaceHolder"></span>
<input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" />
</div> </form>
</div>
</body>
</html>
我整个页面都是弹出层,所以debug开启之后,只出现那个红色的框,如图
有用的错误日志如下:打开debug,错误是
IO Error : File ID: SWFUpload_0_0. IO Error: Error #2038
不打开debug,错误就是500
网上找了很多,说什么调整 max_execution_time、max_input_time、memory_limit、post_max_size、upload_max_filesize
全调了,其实根本不是大小问题。因为我在一个网速慢的电脑上上传一个不到10M的文件,同样错误。那么,关键问题就在于这个2分钟后服务器不再接收数据,但swf的progress却显示仍然在上传。
max_execution_time=600
保持HTTP连接,HTTP超时为600秒(10分钟)
这是目前的配置,也是一样不行。关键不是文件大小,而是时长。