我希望有人能指出我正确的方向。我试着搜索论坛,但没有找到关于这个主题的内容。
无论如何......我正在使用我的网站将带有PHP的文件上传到MySQL数据库中。这一切都运行正常,除非文件到达~4.5Mb及以上范围内的某个地方,脚本失败。 MySQL没有返回错误,并且插入ID为0,PHP没有错误。
我在php.ini文件中尝试了以下内容:
max_execution_time = 600
max_input_time = 600
post_max_size = 15M
upload_max_filesize = 15M
memory_limit = -1
我在MySQL中设置了max_allowed_packet大小:
Variable_name Value
max_allowed_packet 16777216
,文件内容的列类型为mediumblob
以下是执行上传的PHP代码,缩短了一些以排除不相关的内容:
...
$con->query("SET GLOBAL max_allowed_packet = 16777216;");
$con->autocommit(FALSE);
$fp = fopen($file, 'r');
$sql_query->bind_param('ssisb', $FILE['FILE_NAME'], $FILE['FILE_DESC'], $FILE['FILE_SIZE'],
$FILE['FILE_TYPE'], $null);
while(!feof($fp)){$sql_query->send_long_data(4, fread($fp, 8192));}
fclose($fp);
$sql_query->execute();
$fileIDs[$fileIndex] = $sql_query->insert_id;
...
$con->commit();
...
这是一个循环,因为你可以通过它上传多个文件,即使这样做只要文件单独在~4.5Mb
下工作也可以。这里有人知道为什么会发生这种情况,或者我可以解决这个问题吗?
答案 0 :(得分:0)
更改并重新启动apache
post_max_size = 100M
upload_max_filesize = 100M
还尝试在my.cnf中添加以下行并重新启动
[mysqld]
# Performance settings used for import.
delay_key_write=ALL
bulk_insert_buffer_size=256M