PHP内存耗尽

时间:2010-08-20 19:36:37

标签: php memory file-upload

为什么我会得到任何想法......

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to
     

分配9792个字节)   /home/frich/public_html/creation/systemc/sMain/upload_image.php   在第77行

在以下一行

$oldImage = imagecreatefromjpeg($img);

php从HTML表单中抓取图像并调整其大小。

如果它是一个小文件,可以正常工作。即几百KB

尝试使用更大的文件,因为我希望最多可达4mb。 我得到错误的图像是ca. 2MB

提前致谢

3 个答案:

答案 0 :(得分:10)

您收到错误

""""""""""""""""""""""""
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to

allocate 9792 bytes) in /home/frich/public_html/creation/systemc/sMain/upload_image.php on line 77
""""""""""""""""""""""""

它显示您正在使用共享主机,因为您的服务器memory_limit是32 MB

如上所述,您需要通过“Pekka”和“MartyIX”增加内存限制

但是你如何做到这一点有三种方法。

第一。要求您的托管公司增加内存限制,

他们会将其增加到最多48MB,这是任何托管公司对剪切托管帐户的限制。

第二。上传php.ini文件

写有“memory_limit = 100M和max_memory = 100M”

您可以将100M更改为您想要的任何大小,但可能会有限制,以便它不会使用服务器的额外资源,否则您的帐户可能会被您的托管公司暂停

限制:此选项可能无法在每个主机上正常运行,因为有些时候管理员可能会阻止此代码,因此可能会在LIMIT中使用服务器资源。

第三次上传“.htaccess”

写在其中“php_value memory_limit 32M”

默认情况下,它可以在您的托管网络目录中找到,然后您可以先下载它,因为它也有其他设置。 下载它用记事本打开它并写“php_value memory_limit 32M”

第4个选项为您的页面添加PHP代码

“ini_set('memory_limit','32M');” (我还没有测试过,可能会正常工作)

谢谢和问候........

答案 1 :(得分:7)

您尝试处理的图像太大,无法满足脚本的32 MB内存限制。

调整图片大小至少占用

(width in pixels) x (height in pixels) x 3 (or 4)

字节(红色/绿色/蓝色各1个字节,透明度可能增加一个字节)

您需要增加服务器上的memory_limit设置,或要求管理员这样做。

32MB是一个相当不错的常见价值 - 如果你在共享主机上,你可能会失去运气。

或者,如果可能在您的服务器上,请使用ImageMagick,其内存消耗不计入memory_limit

答案 2 :(得分:0)

根据您的php配置,您可以使用ini_set()增加脚本的内存限制;例如,

ini_set('memory_limit','16M');

我已经在很多场合使用过这个图像处理任务,尽管4mb文件对于Web服务器来说是一个非常重的负载。