创建图像时 PHP 内存耗尽

问题描述 投票:0回答:3

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

致命错误:允许的内存大小 33554432 字节已耗尽(尝试分配 9792 字节) /home/frich/public_html/creation/systemc/sMain/upload_image.php 77号线

在下一行

$oldImage = imagecreatefromjpeg($img);

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

如果文件很小,则效果很好。 IE。几百KB

尝试使用更大的文件,因为我想要最大 4mb。 我收到错误的图像是 ca。 2MB

提前致谢

php memory
3个回答
11
投票

您遇到错误

""""""""""""""""""""""""
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
""""""""""""""""""""""""

它表明您正在使用共享主机,因为您的服务器内存限制为 32 MB

您需要按照上面“Pekka”和“MartyIX”所述增加您的内存限制

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

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

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

第二。上传 php.ini 文件

写着“memory_limit = 100M and max_memory = 100M”

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

限制:此选项可能无法在每个主机上正常工作,因为有时此代码可能会被管理员阻止,从而导致服务器资源消耗有限。

第三上传“.htaccess”

里面写着“php_value memory_limit 32M”

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

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

“ini_set(‘内存限制’,‘32M’);” (尚未经过我测试,可能效果很好)

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


8
投票

您尝试处理的图像对于脚本的 32 MB 内存限制来说太大。

调整图像大小至少占用

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

字节(红/绿/蓝各 1 个字节,可能需要另外一个字节用于透明度)

您需要增加服务器上的

memory_limit
设置,或要求管理员这样做。

32MB 是一个相当不错且常见的值 - 如果您使用共享主机,您可能会不走运。

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

memory_limit


0
投票

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

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

我在图像处理任务中多次使用过它,尽管 4mb 文件对于 Web 服务器来说是相当重的负载。

© www.soinside.com 2019 - 2024. All rights reserved.