当我尝试上传文件时,我检查文件大小如下:
var date = DateTime.ParseExact("20120214",
"yyyyMMdd",
CultureInfo.InvariantCulture);
var result = dbContext.orders
.Where(q => dbContext.orders
.Where(s => s.purch_amt < q.purch_amt)
.Where(s => s.ord_date == date).Count() > 0)
.ToList()
在我的htaccess文件中,我有:
if($_FILES['attachment_file']['size'] > (1024 * 1024 * 20)) // 20 MB
{
echo 'The file is too big !'; exit();
}
所以,如果文件超过20 MB,我检查使用php,然后停止脚本。但错误&#34;文件太大了!&#34;没有显示...
在php错误日志中,我收到错误&#34;允许的内存大小为22020096字节耗尽&#34;。
如果我将php_value memory_limit 21M
php_value max_execution_time 300
php_value upload_max_filesize 21M
php_value post_max_size 21M
更改为(1024 * 1024 * 20)
,它就会按预期工作。 php捕获错误并向我显示消息:&#34;文件太大了!&#34;。
问题出在哪里?为什么不使用20 MB?
PS:我检查了phpinfo,看看来自htaccess的配置是否正常,而且没问题。
答案 0 :(得分:1)
如果您使用的是imagecreatefromjpeg()
,我怀疑它需要分配足够的内存来存储源图像中的原始像素数据。也就是说,加载10x10图像将需要10 * 10 * 3 = 300字节的存储或更多仅用于像素数据。鉴于JPEG大小,我怀疑你有一个非常大的图像。该像素数据的大小加上任何PHP开销都可能超出您的内存限制,特别是如果您正在进行除读取和保存之外的任何操作。
答案 1 :(得分:0)
尝试在.htaccess中增加21MB以上的内存限制以允许应用程序运行时内存,或者在PHP中使用它:
ini_set('memory_limit', '128M');
答案 2 :(得分:0)
您需要确保正确设置以下所有变量:
upload_max_filesize - max size of any individual file in an upload
max_file_uploads - total number of files allowed to be uploaded
post_max_size - sum total of all data being POSTed (form data + files)
memory_limit - must be > post_max_size, to allow space for PHP + script overhead
@ref:Upload doesn't work right when the file is too big
并摆脱这种情况
if($_FILES['attachment_file']['size'] > (1024 * 1024 * 20)) // 20 MB
{
echo 'The file is too big !'; exit();
}