У меня есть файл, который обрабатывает изображения до их вывода в браузер. Вот код:Выход изображения PHP внезапно прекратил работать
<?php
require_once($_SERVER["DOCUMENT_ROOT"].'/_content/_constants.php');
require_once($_SERVER["DOCUMENT_ROOT"].'/_content/_functions.php');
function hex2rgb($hex) {
$hex = str_replace("#", "", $hex);
if(strlen($hex) == 3) {
$r = hexdec(substr($hex,0,1).substr($hex,0,1));
$g = hexdec(substr($hex,1,1).substr($hex,1,1));
$b = hexdec(substr($hex,2,1).substr($hex,2,1));
} else {
$r = hexdec(substr($hex,0,2));
$g = hexdec(substr($hex,2,2));
$b = hexdec(substr($hex,4,2));
}
$rgb = array($r, $g, $b);
//return implode(",", $rgb); // returns the rgb values separated by commas
return $rgb; // returns an array with the rgb values
}
/*-- Get the hex color code from the URL query --*/
$rgb = hex2rgb((isset($_GET["color1"]) && $_GET["color1"] != '' ? $_GET["color1"] : "C9AA14"));
/*-- Get the image file --*/
$im = imagecreatefrompng (BASE."/_content/images/".$_GET["img"]);
/*-- Preserve transparency --*/
imageAlphaBlending($im, false);
imageSaveAlpha($im, true);
//$index = imagecolorclosest($im, 0,0,0); // get original color
//imagecolorset($im,imagecolorat($im,8,8), $rgb2[0],$rgb2[1],$rgb2[2]); // SET COLOR OF ICON SYMBOL
/*-- Apply the colorizing filter --*/
imagefilter($im, IMG_FILTER_COLORIZE, $rgb[0],$rgb[1],$rgb[2], 0);
/*-----------------------------------------------
* If the image has a symbol/foreground
* on it, such as the audio/video icons,
* this sets the color of that symbol
*
* Not needed for single color images
*/
//imagefilltoborder($im, 18, 21, imagecolorat($im,23,10), imagecolorallocate($im,0,0,0));
header("Content-type: image/png");
imagePng($im);
?>
На несколько дней назад, когда я пытаюсь загрузить любые изображения через этот файл, я получаю The image {path-to-file} cannot be displayed because it contains errors
.
Я искал ответы на эту проблему, и кажется, что все, кто получает эту ошибку, делают это, потому что они выводят материал до header()
, что не является проблемой в моем случае. Я знаю, что что-то должно было измениться на стороне сервера, потому что это долго работало, а потом внезапно перестало работать. Я тестировал скрипт на другом сервере, и он работал нормально.
Я побежал тест поддержки сценария GD на сервере с этими результатами:
GD is supported by your server!
GD Version Yes
FreeType Support Yes
FreeType Linkage Yes
T1Lib Support No
GIF Read Support Yes
GIF Create Support Yes
JPEG Support Yes
PNG Support Yes
WBMP Support Yes
XPM Support No
XBM Support Yes
JIS-mapped Japanese Font Support No
Основная проблема у меня есть, что я действительно не знаю достаточно о требованиях к серверу для функциональности PHP GD, так что я нужно какое-то направление в отношении того, что я должен рассматривать как возможных виновников в этом случае. Что могло быть причиной этого?
Что сервера? Я прошу, потому что в последнем MAMP (Apache Mysql PHP для MacOs) есть ошибка, и перед возвратом к старой версии у меня были проблемы со всеми материалами генерации изображений. Тот же код отлично работал на удаленном сервере. Попробуйте код на другом сервере. Что вы сделали «несколько дней назад», которые изменили ситуацию, если она работала раньше? – FrancescoMM
Я действительно говорил, что попробовал это на другом сервере, и там все отлично. Я много работаю над сайтом, но все это просто материал PHP/HTML, который фактически не должен ничего менять на сервере. Единственное, что может быть связано с удаленностью, - это изменение, которое я сделал с файлом .htaccess, но я тестировал это (вернул его и даже удалил), и проблема осталась. – vertigoelectric
Это информация о сервере, которую вы просили? Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 – vertigoelectric