0

我目前正在使用 PHP CodeIgniter 框架并有一个图像上传表单。当我上传小文件时,脚本运行没有任何问题,但是当我选择一个文件时,假设要上传 3mb,脚本没有运行,进入一个页面并显示“页面加载失败”。我检查了 php 日志和 apache 日志。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 的 php.ini,我认为它不会触发失败。

; 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)

但是页面没有加载,然后失败。当我单击提交时,它无法正确处理。

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

编辑:

现在我在将它们更改为 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
4

2 回答 2

3

这两个指令都将失败,因为文件大小 > 32MB(因为它至少是 33554432 字节)。

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

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

此外,您将需要增加memory_limit

于 2013-03-21T16:57:06.923 回答
1

您的内存限制为 32M,并尝试分配更多内存,因此您的脚本失败了。可能您必须使用大图像(image_gd 在内存中保留一个位图,这会消耗大量内存)。你能做的是

  • 使用 image_magick 代替 gd
  • 增加你的 memory_limit (ie64M 或更多)
于 2013-03-21T16:55:11.337 回答