2013-03-21 99 views
0

我目前使用PHP CodeIgniter框架并且有图片上传表单。当我上传小文件时,脚本运行没有任何问题,但是当我选择一个文件时,可以说3mb上传,脚本不运行,转到页面并显示“页面加载失败”。我检查了PHP日志和Apache日志。 PHP日志给出了这个错误。上传大文件时发生PHP致命错误

PHP Fatal error: 
Allowed memory size of 33554432 bytes exhausted 
(tried to allocate 20736 bytes) in 
/Users/Desktop/localhost/system/libraries/Image_lib.php on line 1155 

我想我必须从CodeIgniter的配置文件中更改一些设置,这是一个真正的假设吗?

这是我目前php.ini的PHP,我认为这不会引发失败。

; Maximum allowed size for uploaded files. 
upload_max_filesize = 32M 

; Must be greater than or equal to 
upload_max_filesize post_max_size = 32M 

max_execution_time = 30  ; Maximum execution time of each script, in seconds 
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data 
memory_limit = 32M  ; Maximum amount of memory a script may consume (8MB) 

但是页面没有加载,然后失败。点击提交时,处理权将失败。

任何提示表示赞赏,在此先感谢。

编辑:

现在我得到这个错误改变themtØ64M后,与memory_limit的

PHP Fatal error: Allowed memory size of 67108864 bytes 
exhausted (tried to allocate 20736 bytes) in 
/Users/Desktop/localhost/system/libraries/Image_lib.php on line 1155 

回答

3

这两个指令的,因为文件的大小就会失败> 32MB(如它至少是33554432字节)。另外,您需要增加memory_limit

+0

我必须重新启动服务器吗? (我在麻瓜,因为当我改变它并重新加载,它仍然在日志中说32mb) – Grigor 2013-03-21 17:14:28

+0

现在我得到这个错误。 PHP致命错误:允许67108864个字节的内存大小耗尽(试图分配20736个字节)位于/Users/Desktop/localhost/system/libraries/Image_lib.php上,第1155行 – Grigor 2013-03-21 17:15:20

+0

这意味着文件大小对于限制设置。文件有多大?限制必须至少与文件大小一样大。是的,你需要重新启动apache才能使更改生效。 – stormdrain 2013-03-21 17:24:17

1

你有32M的内存限制,并试图分配更多的内存一起,让您的脚本失败。可能你需要大图像(image_gd在内存中保留一个位图,消耗大量内存)。 你可以做的是

  • 使用image_magick代替GD
  • 增加你的memory_limit的(ie64M以上)
+0

image_magick可能是不可能的,因为他使用的框架和重写框架将最终在一个烂摊子... – ITroubs 2013-03-21 16:56:54