我收到内存错误:
Fatal error: Out of memory (allocated 67633152) (tried to allocate 19104 bytes)
我做了大量的研究。我试图将php.ini的内存限制增加到256M,并使用phpinfo()检查它是否已更改。这没用。
我的图片是9.6M的大图片,4776px×2856px res。我知道上传的图像可能会膨胀到四周左右:4776x2856x3 = 40M +。但这远低于256M的内存限制。我甚至试过设置内存限制为10000M。这也不起作用。
我上传了其他工作正常的小图片,但后来重试了大图片但没有成功,也没有更改错误信息。
我的下一步是什么?
以下是我上传代码的精简版:
foreach(array_keys($FILES['name']) as $KEY) {
if($FILES['type'][$KEY] === 'image/jpeg') {
$TEMP = imagecreatefromjpeg($FILES['tmp_name'][$KEY]);
} else if($FILES['type'][$KEY] === 'image/png') {
$TEMP = imagecreatefrompng($FILES['tmp_name'][$KEY]);
} else if($FILES['type'][$KEY] === 'image/gif') {
$TEMP = imagecreatefromgif($FILES['tmp_name'][$KEY]);
} else {
die(); }
$HD = $KEY.'.jpeg';
imagejpeg($TEMP, $HD, 100);
imagedestroy($TEMP);
}
这是我的php.ini
INPUT:
post_max_size = 1024M
upload_max_filesize = 1024M
max_file_uploads = 200
memory_limit = 1024M
max_execution_time = 259200
max_input_time = 259200
session.gc_maxlifetime = 1200
答案 0 :(得分:0)
在许多情况下,更改内存限制将有助于除了我的。我刚刚在我的主机上看到即使更改内存限制确实反映在phpinfo();这不是主持人施加的实际限制,可能会有所不同。
由于我们的共享主机机器上的资源限制,它不是 可以为PHP分配更多的内存而不是你的最大内存 包。使用php.ini文件或memory_limit指令 增加PHP的内存可能会导致phpinfo()输出反映 然而,服务器不会分配更多的内存 限制强加