Php 设置ini后出现内部服务器错误(';内存限制';,';512M';);
在用php设置内存限制后,我总是会得到一个500的内部服务器错误。我不知道为什么,但如果我不知道,我的剧本会告诉我Php 设置ini后出现内部服务器错误(';内存限制';,';512M';);,php,Php,在用php设置内存限制后,我总是会得到一个500的内部服务器错误。我不知道为什么,但如果我不知道,我的剧本会告诉我 致命错误:允许的X字节内存大小已用尽(尝试分配Y字节) 有什么办法解决这个问题吗 我使用的脚本是使图像的角变圆(透明角) 您试图分配太多内存。尝试将其切成两半,直到不再出现服务器错误。您试图分配太多内存。试着把它切成两半,直到你不再有服务器错误。我同意@DaveRandom我得到了与你相同的错误$q在10时,我放了一个1024x768图像,它试图创建一个10240x7680,相当
致命错误:允许的X字节内存大小已用尽(尝试分配Y字节)
有什么办法解决这个问题吗
我使用的脚本是使图像的角变圆(透明角)
您试图分配太多内存。尝试将其切成两半,直到不再出现服务器错误。您试图分配太多内存。试着把它切成两半,直到你不再有服务器错误。我同意@DaveRandom我得到了与你相同的错误$q在10时,我放了一个1024x768图像,它试图创建一个10240x7680,相当于一个7800万像素的图像,RGB几乎变成240MB
当我将$q设置为1时,代码运行良好,生成的图像棱角被很好地切割。我同意@DaveRandom的观点,我得到了与您相同的错误,$q设置为10时,我放置了一个1024x768图像,它试图创建10240x7680,这相当于一个大小为7800万像素的图像,RGB几乎变成240MB
当我将$q设置为1时,代码运行良好,生成的图像很好地减少了角。我可以将其设置为175M,而不会出现服务器错误,但随后出现致命错误:允许内存大小为183500800字节(尝试分配24000字节)是否检查了php_info()要查看当前的内存限制,请确定该计算机上有足够的内存。或者当它是共享主机时,有足够的内存可用。@Greg 64M根据phpinfo()@PeeHaa我不知道。不过,我对当前的主机非常不满意,一年后我就要更换。我可以将其设置为175M,而不会出现服务器错误,但随后我会遇到致命错误:允许的内存大小为183500800字节(尝试分配24000字节)已用完。您检查过php_info()吗要查看当前的内存限制,请确定该计算机上有足够的内存。或者当它是共享主机时,有足够的内存可用。@Greg 64M根据phpinfo()@PeeHaa我不知道。我对我现在的主人很不满意,一年过去了我就要换了。你做了什么需要这么多记忆的事情?也许你应该寻求帮助以减少内存使用。对我来说,听起来好像你有一些无限递归算法或类似的东西来使用所有这些和更多:)@EkimYardimli我把我正在使用的脚本添加到question@CupOfTea696错误的行号是多少?@CupOfTea696另外,看起来您保留
$src
的时间比需要的时间长得多-请尝试移动imagedestroy($src);
到下一行imagecopyresampled($img,$src,0,0,0,$nw,$nh,$w,$h);
@CupOfTea696您是有意将图像放大到10倍大小的吗?我刚刚在玩您的脚本,我和您一样出错,只要我将$q=10;
更改为$q=1;
它工作正常。您做什么需要这么多内存?也许您应该寻求帮助以减少内存ry用法。对我来说,听起来好像你有一些无限递归算法或类似的东西来使用所有这些和更多:)@EkimYardimli我将使用的脚本添加到question@CupOfTea696错误的行号是多少?@CupOfTea696另外,看起来您保留$src
的时间比需要的时间长得多-尝试移动imagedestroy($src)代码>到下一行imagecopyresampled($img、$src、0、0、0、$nw、$nh、$w、$h)代码>@CupOfTea696您是否有意将图像放大到10倍大小?我刚刚在玩你的脚本,当我改变$q=10时,我得到了与你相同的错误代码>至$q=1代码>它工作得很好。
<?php
function imageCreateCorners($sourceImageFile, $radius) {
# test source image
if (file_exists($sourceImageFile)) {
$res = is_array($info = getimagesize($sourceImageFile));
}
else $res = false;
# open image
if ($res) {
$w = $info[0];
$h = $info[1];
switch ($info['mime']) {
case 'image/jpeg': $src = imagecreatefromjpeg($sourceImageFile);
break;
case 'image/gif': $src = imagecreatefromgif($sourceImageFile);
break;
case 'image/png': $src = imagecreatefrompng($sourceImageFile);
break;
default:
$res = false;
}
}
# create corners
if ($res) {
$q = 10; # change this if you want
$radius *= $q;
# find unique color
do {
$r = rand(0, 255);
$g = rand(0, 255);
$b = rand(0, 255);
}
while (imagecolorexact($src, $r, $g, $b) < 0);
$nw = $w*$q;
$nh = $h*$q;
$img = imagecreatetruecolor($nw, $nh);
$alphacolor = imagecolorallocatealpha($img, $r, $g, $b, 127);
imagealphablending($img, false);
imagesavealpha($img, true);
imagefilledrectangle($img, 0, 0, $nw, $nh, $alphacolor);
imagefill($img, 0, 0, $alphacolor);
imagecopyresampled($img, $src, 0, 0, 0, 0, $nw, $nh, $w, $h);
imagearc($img, $radius-1, $radius-1, $radius*2, $radius*2, 180, 270, $alphacolor);
imagefilltoborder($img, 0, 0, $alphacolor, $alphacolor);
imagearc($img, $nw-$radius, $radius-1, $radius*2, $radius*2, 270, 0, $alphacolor);
imagefilltoborder($img, $nw-1, 0, $alphacolor, $alphacolor);
imagearc($img, $radius-1, $nh-$radius, $radius*2, $radius*2, 90, 180, $alphacolor);
imagefilltoborder($img, 0, $nh-1, $alphacolor, $alphacolor);
imagearc($img, $nw-$radius, $nh-$radius, $radius*2, $radius*2, 0, 90, $alphacolor);
imagefilltoborder($img, $nw-1, $nh-1, $alphacolor, $alphacolor);
imagealphablending($img, true);
imagecolortransparent($img, $alphacolor);
# resize image down
$dest = imagecreatetruecolor($w, $h);
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagefilledrectangle($dest, 0, 0, $w, $h, $alphacolor);
imagecopyresampled($dest, $img, 0, 0, 0, 0, $w, $h, $nw, $nh);
# output image
$res = $dest;
imagedestroy($src);
imagedestroy($img);
}
return $res;
}
imagepng(imageCreateCorners('img.jpg', 13), 'test.png');
?>