Ejemplo n.º 1
0
 function ResolveFilenameToAbsolute($filename)
 {
     if (empty($filename)) {
         return false;
     }
     if (preg_match('#^[a-z0-9]+\\:/{1,2}#i', $filename)) {
         // eg: http://host/path/file.jpg (HTTP URL)
         // eg: ftp://host/path/file.jpg  (FTP URL)
         // eg: data1:/path/file.jpg      (Netware path)
         //$AbsoluteFilename = $filename;
         return $filename;
     } elseif ($this->iswindows && isset($filename[1]) && $filename[1] == ':') {
         // absolute pathname (Windows)
         $AbsoluteFilename = $filename;
     } elseif ($this->iswindows && (substr($filename, 0, 2) == '//' || substr($filename, 0, 2) == '\\\\')) {
         // absolute pathname (Windows)
         $AbsoluteFilename = $filename;
     } elseif ($filename[0] == '/') {
         if (@is_readable($filename) && !@is_readable($this->config_document_root . $filename)) {
             // absolute filename (*nix)
             $AbsoluteFilename = $filename;
         } elseif (isset($filename[1]) && $filename[1] == '~') {
             // /~user/path
             if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray($filename)) {
                 $AbsoluteFilename = $ApacheLookupURIarray['filename'];
             } else {
                 $AbsoluteFilename = realpath($filename);
                 if (@is_readable($AbsoluteFilename)) {
                     $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "' . $filename . '", but the correct filename (' . $AbsoluteFilename . ') seems to have been resolved with realpath($filename)', __FILE__, __LINE__);
                 } elseif (is_dir(dirname($AbsoluteFilename))) {
                     $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "' . dirname($filename) . '", but the correct directory (' . dirname($AbsoluteFilename) . ') seems to have been resolved with realpath(.)', __FILE__, __LINE__);
                 } else {
                     return $this->ErrorImage('phpthumb_functions::ApacheLookupURIarray() failed for "' . $filename . '". This has been known to fail on Apache2 - try using the absolute filename for the source image (ex: "/home/user/httpdocs/image.jpg" instead of "/~user/image.jpg")');
                 }
             }
         } else {
             // relative filename (any OS)
             if (preg_match('#^' . preg_quote($this->config_document_root) . '#', $filename)) {
                 $AbsoluteFilename = $filename;
                 $this->DebugMessage('ResolveFilenameToAbsolute() NOT prepending $this->config_document_root (' . $this->config_document_root . ') to $filename (' . $filename . ') resulting in ($AbsoluteFilename = "' . $AbsoluteFilename . '")', __FILE__, __LINE__);
             } else {
                 $AbsoluteFilename = $this->config_document_root . $filename;
                 $this->DebugMessage('ResolveFilenameToAbsolute() prepending $this->config_document_root (' . $this->config_document_root . ') to $filename (' . $filename . ') resulting in ($AbsoluteFilename = "' . $AbsoluteFilename . '")', __FILE__, __LINE__);
             }
         }
     } else {
         // relative to current directory (any OS)
         $AbsoluteFilename = $this->config_document_root . preg_replace('#[/\\\\]#', DIRECTORY_SEPARATOR, dirname(@$_SERVER['PHP_SELF'])) . DIRECTORY_SEPARATOR . preg_replace('#[/\\\\]#', DIRECTORY_SEPARATOR, $filename);
         //			$AbsoluteFilename = dirname(__FILE__).DIRECTORY_SEPARATOR.preg_replace('#[/\\\\]#', DIRECTORY_SEPARATOR, $filename);
         $AbsoluteFilename = preg_replace('~[\\/]+~', DIRECTORY_SEPARATOR, $AbsoluteFilename);
         //if (!@file_exists($AbsoluteFilename) && @file_exists(realpath($this->DotPadRelativeDirectoryPath($filename)))) {
         //	$AbsoluteFilename = realpath($this->DotPadRelativeDirectoryPath($filename));
         //}
         if (substr(dirname(@$_SERVER['PHP_SELF']), 0, 2) == '/~') {
             if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
                 $AbsoluteFilename = $ApacheLookupURIarray['filename'] . DIRECTORY_SEPARATOR . $filename;
             } else {
                 $AbsoluteFilename = realpath('.') . DIRECTORY_SEPARATOR . $filename;
                 if (@is_readable($AbsoluteFilename)) {
                     $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "' . dirname(@$_SERVER['PHP_SELF']) . '", but the correct filename (' . $AbsoluteFilename . ') seems to have been resolved with realpath(.)/$filename', __FILE__, __LINE__);
                 } elseif (is_dir(dirname($AbsoluteFilename))) {
                     $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "' . dirname(@$_SERVER['PHP_SELF']) . '", but the correct directory (' . dirname($AbsoluteFilename) . ') seems to have been resolved with realpath(.)', __FILE__, __LINE__);
                 } else {
                     return $this->ErrorImage('phpthumb_functions::ApacheLookupURIarray() failed for "' . dirname(@$_SERVER['PHP_SELF']) . '". This has been known to fail on Apache2 - try using the absolute filename for the source image');
                 }
             }
         }
     }
     if (is_link($AbsoluteFilename)) {
         $this->DebugMessage('is_link()==true, changing "' . $AbsoluteFilename . '" to "' . readlink($AbsoluteFilename) . '"', __FILE__, __LINE__);
         $AbsoluteFilename = readlink($AbsoluteFilename);
     }
     if (realpath($AbsoluteFilename)) {
         $AbsoluteFilename = realpath($AbsoluteFilename);
     }
     if ($this->iswindows) {
         $AbsoluteFilename = preg_replace('#^' . preg_quote(realpath($this->config_document_root)) . '#i', realpath($this->config_document_root), $AbsoluteFilename);
         $AbsoluteFilename = str_replace(DIRECTORY_SEPARATOR, '/', $AbsoluteFilename);
     }
     if (!$this->config_allow_src_above_docroot && !preg_match('#^' . preg_quote(str_replace(DIRECTORY_SEPARATOR, '/', realpath($this->config_document_root))) . '#', $AbsoluteFilename)) {
         $this->DebugMessage('!$this->config_allow_src_above_docroot therefore setting "' . $AbsoluteFilename . '" (outside "' . realpath($this->config_document_root) . '") to null', __FILE__, __LINE__);
         return false;
     }
     if (!$this->config_allow_src_above_phpthumb && !preg_match('#^' . preg_quote(str_replace(DIRECTORY_SEPARATOR, '/', dirname(__FILE__))) . '#', $AbsoluteFilename)) {
         $this->DebugMessage('!$this->config_allow_src_above_phpthumb therefore setting "' . $AbsoluteFilename . '" (outside "' . dirname(__FILE__) . '") to null', __FILE__, __LINE__);
         return false;
     }
     return $AbsoluteFilename;
 }
Ejemplo n.º 2
0
 function phpThumbDebug($level = '')
 {
     if ($level && $this->phpThumbDebug !== $level) {
         return true;
     }
     if ($this->config_disable_debug) {
         return $this->ErrorImage('phpThumbDebug disabled');
     }
     $FunctionsExistance = array('exif_thumbnail', 'gd_info', 'image_type_to_mime_type', 'GetImageSize', 'ImageCopyResampled', 'ImageCopyResized', 'ImageCreate', 'ImageCreateFromString', 'ImageCreateTrueColor', 'ImageIsTrueColor', 'ImageRotate', 'ImageTypes', 'version_compare', 'ImageCreateFromGIF', 'ImageCreateFromJPEG', 'ImageCreateFromPNG', 'ImageCreateFromWBMP', 'ImageCreateFromXBM', 'ImageCreateFromXPM', 'ImageCreateFromString', 'ImageCreateFromGD', 'ImageCreateFromGD2', 'ImageCreateFromGD2Part', 'ImageJPEG', 'ImageGIF', 'ImagePNG', 'ImageWBMP');
     $ParameterNames = array('src', 'new', 'w', 'h', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'far', 'bg', 'bc', 'file', 'goto', 'err', 'xto', 'ra', 'ar', 'aoe', 'iar', 'maxb');
     $ConfigVariableNames = array('document_root', 'temp_directory', 'output_format', 'output_maxwidth', 'output_maxheight', 'error_message_image_default', 'error_bgcolor', 'error_textcolor', 'error_fontsize', 'error_die_on_error', 'error_silent_die_on_error', 'error_die_on_source_failure', 'nohotlink_enabled', 'nohotlink_valid_domains', 'nohotlink_erase_image', 'nohotlink_text_message', 'nooffsitelink_enabled', 'nooffsitelink_valid_domains', 'nooffsitelink_require_refer', 'nooffsitelink_erase_image', 'nooffsitelink_text_message', 'high_security_enabled', 'allow_src_above_docroot', 'allow_src_above_phpthumb', 'max_source_pixels', 'use_exif_thumbnail_for_speed', 'border_hexcolor', 'background_hexcolor', 'ttf_directory', 'disable_pathinfo_parsing', 'disable_imagecopyresampled');
     $OtherVariableNames = array('phpThumbDebug', 'thumbnailQuality', 'thumbnailFormat', 'gdimg_output', 'gdimg_source', 'sourceFilename', 'source_width', 'source_height', 'thumbnailCropX', 'thumbnailCropY', 'thumbnailCropW', 'thumbnailCropH', 'exif_thumbnail_width', 'exif_thumbnail_height', 'exif_thumbnail_type', 'thumbnail_width', 'thumbnail_height', 'thumbnail_image_width', 'thumbnail_image_height');
     $DebugOutput = array();
     $DebugOutput[] = 'phpThumb() version          = ' . $this->phpthumb_version;
     $DebugOutput[] = 'phpversion()                = ' . @phpversion();
     $DebugOutput[] = 'PHP_OS                      = ' . PHP_OS;
     $DebugOutput[] = '$_SERVER[SERVER_SOFTWARE]   = ' . @$_SERVER['SERVER_SOFTWARE'];
     $DebugOutput[] = '__FILE__                    = ' . __FILE__;
     $DebugOutput[] = 'realpath(.)                 = ' . @realpath('.');
     $DebugOutput[] = '$_SERVER[PHP_SELF]          = ' . @$_SERVER['PHP_SELF'];
     $DebugOutput[] = '$_SERVER[HOST_NAME]         = ' . @$_SERVER['HOST_NAME'];
     $DebugOutput[] = '$_SERVER[HTTP_REFERER]      = ' . @$_SERVER['HTTP_REFERER'];
     $DebugOutput[] = '$_SERVER[QUERY_STRING]      = ' . @$_SERVER['QUERY_STRING'];
     $DebugOutput[] = '$_SERVER[PATH_INFO]         = ' . @$_SERVER['PATH_INFO'];
     $DebugOutput[] = '$_SERVER[DOCUMENT_ROOT]     = ' . @$_SERVER['DOCUMENT_ROOT'];
     $DebugOutput[] = 'getenv(DOCUMENT_ROOT)       = ' . @getenv('DOCUMENT_ROOT');
     $DebugOutput[] = '';
     $DebugOutput[] = 'get_magic_quotes_gpc()         = ' . $this->phpThumbDebugVarDump(@get_magic_quotes_gpc());
     $DebugOutput[] = 'get_magic_quotes_runtime()     = ' . $this->phpThumbDebugVarDump(@get_magic_quotes_runtime());
     $DebugOutput[] = 'error_reporting()              = ' . $this->phpThumbDebugVarDump(error_reporting());
     $DebugOutput[] = 'ini_get(error_reporting)       = ' . $this->phpThumbDebugVarDump(@ini_get('error_reporting'));
     $DebugOutput[] = 'ini_get(display_errors)        = ' . $this->phpThumbDebugVarDump(@ini_get('display_errors'));
     $DebugOutput[] = 'ini_get(allow_url_fopen)       = ' . $this->phpThumbDebugVarDump(@ini_get('allow_url_fopen'));
     $DebugOutput[] = 'ini_get(disable_functions)     = ' . $this->phpThumbDebugVarDump(@ini_get('disable_functions'));
     $DebugOutput[] = 'get_cfg_var(disable_functions) = ' . $this->phpThumbDebugVarDump(@get_cfg_var('disable_functions'));
     $DebugOutput[] = 'ini_get(safe_mode)             = ' . $this->phpThumbDebugVarDump(@ini_get('safe_mode'));
     $DebugOutput[] = 'ini_get(open_basedir)          = ' . $this->phpThumbDebugVarDump(@ini_get('open_basedir'));
     $DebugOutput[] = 'ini_get(max_execution_time)    = ' . $this->phpThumbDebugVarDump(@ini_get('max_execution_time'));
     $DebugOutput[] = 'ini_get(memory_limit)          = ' . $this->phpThumbDebugVarDump(@ini_get('memory_limit'));
     $DebugOutput[] = 'get_cfg_var(memory_limit)      = ' . $this->phpThumbDebugVarDump(@get_cfg_var('memory_limit'));
     $DebugOutput[] = 'memory_get_usage()             = ' . (function_exists('memory_get_usage') ? $this->phpThumbDebugVarDump(@memory_get_usage()) : 'n/a');
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_prefer_imagemagick            = ' . $this->phpThumbDebugVarDump($this->config_prefer_imagemagick);
     $DebugOutput[] = '$this->config_imagemagick_path              = ' . $this->phpThumbDebugVarDump($this->config_imagemagick_path);
     $DebugOutput[] = '$this->ImageMagickWhichConvert()            = ' . $this->ImageMagickWhichConvert();
     $IMpathUsed = $this->config_imagemagick_path ? $this->config_imagemagick_path : $this->ImageMagickWhichConvert();
     $DebugOutput[] = '[actual ImageMagick path used]              = ' . $this->phpThumbDebugVarDump($IMpathUsed);
     $DebugOutput[] = 'file_exists([actual ImageMagick path used]) = ' . $this->phpThumbDebugVarDump(@file_exists($IMpathUsed));
     $DebugOutput[] = 'ImageMagickVersion(false)                   = ' . $this->ImageMagickVersion(false);
     $DebugOutput[] = 'ImageMagickVersion(true)                    = ' . $this->ImageMagickVersion(true);
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_cache_directory               = ' . $this->phpThumbDebugVarDump($this->config_cache_directory);
     $DebugOutput[] = '$this->config_cache_directory_depth         = ' . $this->phpThumbDebugVarDump($this->config_cache_directory_depth);
     $DebugOutput[] = '$this->config_cache_disable_warning         = ' . $this->phpThumbDebugVarDump($this->config_cache_disable_warning);
     $DebugOutput[] = '$this->config_cache_maxage                  = ' . $this->phpThumbDebugVarDump($this->config_cache_maxage);
     $DebugOutput[] = '$this->config_cache_maxsize                 = ' . $this->phpThumbDebugVarDump($this->config_cache_maxsize);
     $DebugOutput[] = '$this->config_cache_maxfiles                = ' . $this->phpThumbDebugVarDump($this->config_cache_maxfiles);
     $DebugOutput[] = '$this->config_cache_force_passthru          = ' . $this->phpThumbDebugVarDump($this->config_cache_force_passthru);
     $DebugOutput[] = '$this->cache_filename                       = ' . $this->phpThumbDebugVarDump($this->cache_filename);
     $DebugOutput[] = 'is_readable($this->config_cache_directory)  = ' . $this->phpThumbDebugVarDump(@is_readable($this->config_cache_directory));
     $DebugOutput[] = 'is_writable($this->config_cache_directory)  = ' . $this->phpThumbDebugVarDump(@is_writable($this->config_cache_directory));
     $DebugOutput[] = 'is_readable($this->cache_filename)          = ' . $this->phpThumbDebugVarDump(@is_readable($this->cache_filename));
     $DebugOutput[] = 'is_writable($this->cache_filename)          = ' . (@file_exists($this->cache_filename) ? $this->phpThumbDebugVarDump(@is_writable($this->cache_filename)) : 'n/a');
     $DebugOutput[] = '';
     foreach ($ConfigVariableNames as $varname) {
         $varname = 'config_' . $varname;
         $value = $this->{$varname};
         $DebugOutput[] = '$this->' . str_pad($varname, 37, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     foreach ($OtherVariableNames as $varname) {
         $value = $this->{$varname};
         $DebugOutput[] = '$this->' . str_pad($varname, 27, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = 'strlen($this->rawImageData)        = ' . strlen(@$this->rawImageData);
     $DebugOutput[] = 'strlen($this->exif_thumbnail_data) = ' . strlen(@$this->exif_thumbnail_data);
     $DebugOutput[] = '';
     foreach ($ParameterNames as $varname) {
         $value = $this->{$varname};
         $DebugOutput[] = '$this->' . str_pad($varname, 4, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     foreach ($FunctionsExistance as $functionname) {
         $DebugOutput[] = 'builtin_function_exists(' . $functionname . ')' . str_repeat(' ', 23 - strlen($functionname)) . ' = ' . $this->phpThumbDebugVarDump(phpthumb_functions::builtin_function_exists($functionname));
     }
     $DebugOutput[] = '';
     $gd_info = gd_info();
     foreach ($gd_info as $key => $value) {
         $DebugOutput[] = 'gd_info.' . str_pad($key, 34, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     $exif_info = phpthumb_functions::exif_info();
     foreach ($exif_info as $key => $value) {
         $DebugOutput[] = 'exif_info.' . str_pad($key, 26, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
         foreach ($ApacheLookupURIarray as $key => $value) {
             $DebugOutput[] = 'ApacheLookupURIarray.' . str_pad($key, 15, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
         }
     } else {
         $DebugOutput[] = 'ApacheLookupURIarray() -- FAILED';
     }
     $DebugOutput[] = '';
     if (isset($_GET) && is_array($_GET)) {
         foreach ($_GET as $key => $value) {
             $DebugOutput[] = '$_GET[' . $key . ']' . str_repeat(' ', 30 - strlen($key)) . '= ' . $this->phpThumbDebugVarDump($value);
         }
     }
     if (isset($_POST) && is_array($_POST)) {
         foreach ($_POST as $key => $value) {
             $DebugOutput[] = '$_POST[' . $key . ']' . str_repeat(' ', 29 - strlen($key)) . '= ' . $this->phpThumbDebugVarDump($value);
         }
     }
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->debugmessages:';
     foreach ($this->debugmessages as $errorstring) {
         $DebugOutput[] = '  * ' . $errorstring;
     }
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->debugtiming:';
     foreach ($this->debugtiming as $timestamp => $timingstring) {
         $DebugOutput[] = '  * ' . $timestamp . ' ' . $timingstring;
     }
     $DebugOutput[] = '  * Total processing time: ' . number_format(max(array_keys($this->debugtiming)) - min(array_keys($this->debugtiming)), 6);
     $this->f = isset($_GET['f']) ? $_GET['f'] : $this->f;
     // debug modes 0-2 don't recognize text mode otherwise
     return $this->ErrorImage(implode("\n", $DebugOutput), 700, 500, true);
 }
 function phpThumbDebug()
 {
     if ($this->config_disable_debug) {
         return $this->ErrorImage('phpThumbDebug disabled');
     }
     $FunctionsExistance = array('exif_thumbnail', 'gd_info', 'image_type_to_mime_type', 'ImageCopyResampled', 'ImageCopyResized', 'ImageCreate', 'ImageCreateFromString', 'ImageCreateTrueColor', 'ImageIsTrueColor', 'ImageRotate', 'ImageTypes', 'version_compare', 'ImageCreateFromGIF', 'ImageCreateFromJPEG', 'ImageCreateFromPNG', 'ImageCreateFromWBMP', 'ImageCreateFromXBM', 'ImageCreateFromXPM', 'ImageCreateFromString', 'ImageCreateFromGD', 'ImageCreateFromGD2', 'ImageCreateFromGD2Part', 'ImageJPEG', 'ImageGIF', 'ImagePNG', 'ImageWBMP');
     $ParameterNames = array('src', 'new', 'w', 'h', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'far', 'bg', 'bgt', 'bc', 'file', 'goto', 'err', 'xto', 'ra', 'ar', 'aoe', 'iar', 'maxb');
     $OtherVariableNames = array('phpThumbDebug', 'thumbnailQuality', 'thumbnailFormat', 'gdimg_output', 'gdimg_source', 'sourceFilename', 'source_width', 'source_height', 'thumbnailCropX', 'thumbnailCropY', 'thumbnailCropW', 'thumbnailCropH', 'exif_thumbnail_width', 'exif_thumbnail_height', 'exif_thumbnail_type', 'thumbnail_width', 'thumbnail_height', 'thumbnail_image_width', 'thumbnail_image_height');
     $DebugOutput = array();
     $DebugOutput[] = 'phpThumb() version          = ' . $this->phpthumb_version;
     $DebugOutput[] = 'phpversion()                = ' . @phpversion();
     $DebugOutput[] = 'PHP_OS                      = ' . PHP_OS;
     $DebugOutput[] = '$_SERVER[PHP_SELF]          = ' . @$_SERVER['PHP_SELF'];
     $DebugOutput[] = '$_SERVER[DOCUMENT_ROOT]     = ' . @$_SERVER['DOCUMENT_ROOT'];
     $DebugOutput[] = '$_SERVER[HTTP_REFERER]      = ' . @$_SERVER['HTTP_REFERER'];
     $DebugOutput[] = '$_SERVER[QUERY_STRING]      = ' . @$_SERVER['QUERY_STRING'];
     $DebugOutput[] = 'realpath(.)                 = ' . @realpath('.');
     $DebugOutput[] = '';
     $DebugOutput[] = 'get_magic_quotes_gpc()      = ' . $this->phpThumbDebugVarDump(@get_magic_quotes_gpc());
     $DebugOutput[] = 'get_magic_quotes_runtime()  = ' . $this->phpThumbDebugVarDump(@get_magic_quotes_runtime());
     $DebugOutput[] = 'error_reporting()           = ' . $this->phpThumbDebugVarDump(error_reporting());
     $DebugOutput[] = 'ini_get(error_reporting)    = ' . $this->phpThumbDebugVarDump(@ini_get('error_reporting'));
     $DebugOutput[] = 'ini_get(display_errors)     = ' . $this->phpThumbDebugVarDump(@ini_get('display_errors'));
     $DebugOutput[] = 'ini_get(allow_url_fopen)    = ' . $this->phpThumbDebugVarDump(@ini_get('allow_url_fopen'));
     $DebugOutput[] = 'ini_get(disable_functions)  = ' . $this->phpThumbDebugVarDump(@ini_get('disable_functions'));
     $DebugOutput[] = 'ini_get(safe_mode)          = ' . $this->phpThumbDebugVarDump(@ini_get('safe_mode'));
     $DebugOutput[] = 'ini_get(open_basedir)       = ' . $this->phpThumbDebugVarDump(@ini_get('open_basedir'));
     $DebugOutput[] = 'ini_get(memory_limit)       = ' . $this->phpThumbDebugVarDump(@ini_get('memory_limit'));
     $DebugOutput[] = 'ini_get(max_execution_time) = ' . $this->phpThumbDebugVarDump(@ini_get('max_execution_time'));
     $DebugOutput[] = 'get_cfg_var(memory_limit)   = ' . $this->phpThumbDebugVarDump(@get_cfg_var('memory_limit'));
     $DebugOutput[] = 'memory_get_usage()          = ' . (function_exists('memory_get_usage') ? $this->phpThumbDebugVarDump(@memory_get_usage()) : 'n/a');
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_imagemagick_path              = ' . $this->phpThumbDebugVarDump($this->config_imagemagick_path);
     $DebugOutput[] = 'SafeBackTick(which convert)                 = ' . trim(phpthumb_functions::SafeBackTick('which convert'));
     $IMpathUsed = $this->config_imagemagick_path ? $this->config_imagemagick_path : trim(phpthumb_functions::SafeBackTick('which convert'));
     $DebugOutput[] = '[actual ImageMagick path used]              = ' . $this->phpThumbDebugVarDump($IMpathUsed);
     $DebugOutput[] = 'file_exists([actual ImageMagick path used]) = ' . $this->phpThumbDebugVarDump(file_exists($IMpathUsed));
     $DebugOutput[] = 'ImageMagickVersion()                        = ' . $this->ImageMagickVersion();
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_cache_directory               = ' . $this->phpThumbDebugVarDump($this->config_cache_directory);
     $DebugOutput[] = '$this->config_cache_disable_warning         = ' . $this->phpThumbDebugVarDump($this->config_cache_disable_warning);
     $DebugOutput[] = '$this->config_cache_maxage                  = ' . $this->phpThumbDebugVarDump($this->config_cache_maxage);
     $DebugOutput[] = '$this->config_cache_maxsize                 = ' . $this->phpThumbDebugVarDump($this->config_cache_maxsize);
     $DebugOutput[] = '$this->config_cache_maxfiles                = ' . $this->phpThumbDebugVarDump($this->config_cache_maxfiles);
     $DebugOutput[] = '$this->cache_filename                       = ' . $this->phpThumbDebugVarDump($this->cache_filename);
     $DebugOutput[] = 'is_writable($this->config_cache_directory)  = ' . $this->phpThumbDebugVarDump(is_writable($this->config_cache_directory));
     $DebugOutput[] = 'is_writable($this->cache_filename)          = ' . (file_exists($this->cache_filename) ? $this->phpThumbDebugVarDump(is_writable($this->cache_filename)) : 'n/a');
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_document_root                 = ' . $this->phpThumbDebugVarDump($this->config_document_root);
     $DebugOutput[] = '$this->config_temp_directory                = ' . $this->phpThumbDebugVarDump($this->config_temp_directory);
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_output_format                 = ' . $this->phpThumbDebugVarDump($this->config_output_format);
     $DebugOutput[] = '$this->config_output_maxwidth               = ' . $this->phpThumbDebugVarDump($this->config_output_maxwidth);
     $DebugOutput[] = '$this->config_output_maxheight              = ' . $this->phpThumbDebugVarDump($this->config_output_maxheight);
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_error_message_image_default   = ' . $this->phpThumbDebugVarDump($this->config_error_message_image_default);
     $DebugOutput[] = '$this->config_error_bgcolor                 = ' . $this->phpThumbDebugVarDump($this->config_error_bgcolor);
     $DebugOutput[] = '$this->config_error_textcolor               = ' . $this->phpThumbDebugVarDump($this->config_error_textcolor);
     $DebugOutput[] = '$this->config_error_fontsize                = ' . $this->phpThumbDebugVarDump($this->config_error_fontsize);
     $DebugOutput[] = '$this->config_error_die_on_error            = ' . $this->phpThumbDebugVarDump($this->config_error_die_on_error);
     $DebugOutput[] = '$this->config_error_die_on_error            = ' . $this->phpThumbDebugVarDump($this->config_error_die_on_error);
     $DebugOutput[] = '$this->config_error_silent_die_on_error     = ' . $this->phpThumbDebugVarDump($this->config_error_silent_die_on_error);
     $DebugOutput[] = '$this->config_error_die_on_source_failure   = ' . $this->phpThumbDebugVarDump($this->config_error_die_on_source_failure);
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_nohotlink_enabled             = ' . $this->phpThumbDebugVarDump($this->config_nohotlink_enabled);
     $DebugOutput[] = '$this->config_nohotlink_valid_domains       = ' . $this->phpThumbDebugVarDump($this->config_nohotlink_valid_domains);
     $DebugOutput[] = '$this->config_nohotlink_erase_image         = ' . $this->phpThumbDebugVarDump($this->config_nohotlink_erase_image);
     $DebugOutput[] = '$this->config_nohotlink_text_message        = ' . $this->phpThumbDebugVarDump($this->config_nohotlink_text_message);
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_nooffsitelink_enabled         = ' . $this->phpThumbDebugVarDump($this->config_nooffsitelink_enabled);
     $DebugOutput[] = '$this->config_nooffsitelink_valid_domains   = ' . $this->phpThumbDebugVarDump($this->config_nooffsitelink_valid_domains);
     $DebugOutput[] = '$this->config_nooffsitelink_require_refer   = ' . $this->phpThumbDebugVarDump($this->config_nooffsitelink_require_refer);
     $DebugOutput[] = '$this->config_nooffsitelink_erase_image     = ' . $this->phpThumbDebugVarDump($this->config_nooffsitelink_erase_image);
     $DebugOutput[] = '$this->config_nooffsitelink_text_message    = ' . $this->phpThumbDebugVarDump($this->config_nooffsitelink_text_message);
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->config_max_source_pixels             = ' . $this->phpThumbDebugVarDump($this->config_max_source_pixels);
     $DebugOutput[] = '$this->config_use_exif_thumbnail_for_speed  = ' . $this->phpThumbDebugVarDump($this->config_use_exif_thumbnail_for_speed);
     $DebugOutput[] = '$this->config_output_allow_enlarging        = ' . $this->phpThumbDebugVarDump($this->config_output_allow_enlarging);
     $DebugOutput[] = '$this->config_border_hexcolor               = ' . $this->phpThumbDebugVarDump($this->config_border_hexcolor);
     $DebugOutput[] = '$this->config_background_hexcolor           = ' . $this->phpThumbDebugVarDump($this->config_background_hexcolor);
     $DebugOutput[] = '$this->config_ttf_directory                 = ' . $this->phpThumbDebugVarDump($this->config_ttf_directory);
     $DebugOutput[] = '';
     foreach ($OtherVariableNames as $varname) {
         $value = $this->{$varname};
         $DebugOutput[] = '$this->' . str_pad($varname, 27, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = 'strlen($this->rawImageData)        = ' . strlen(@$this->rawImageData);
     $DebugOutput[] = 'strlen($this->exif_thumbnail_data) = ' . strlen(@$this->exif_thumbnail_data);
     $DebugOutput[] = '';
     foreach ($ParameterNames as $varname) {
         $value = $this->{$varname};
         $DebugOutput[] = '$this->' . str_pad($varname, 4, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     foreach ($FunctionsExistance as $functionname) {
         $DebugOutput[] = 'builtin_function_exists(' . $functionname . ')' . str_repeat(' ', 23 - strlen($functionname)) . ' = ' . $this->phpThumbDebugVarDump(phpthumb_functions::builtin_function_exists($functionname));
     }
     $DebugOutput[] = '';
     $gd_info = phpthumb_functions::gd_info();
     foreach ($gd_info as $key => $value) {
         $DebugOutput[] = 'gd_info.' . str_pad($key, 34, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     $exif_info = phpthumb_functions::exif_info();
     foreach ($exif_info as $key => $value) {
         $DebugOutput[] = 'exif_info.' . str_pad($key, 26, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
     }
     $DebugOutput[] = '';
     if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
         foreach ($ApacheLookupURIarray as $key => $value) {
             $DebugOutput[] = 'ApacheLookupURIarray.' . str_pad($key, 15, ' ', STR_PAD_RIGHT) . ' = ' . $this->phpThumbDebugVarDump($value);
         }
     } else {
         $DebugOutput[] = 'ApacheLookupURIarray() -- FAILED';
     }
     $DebugOutput[] = '';
     if (isset($_GET) && is_array($_GET)) {
         foreach ($_GET as $key => $value) {
             $DebugOutput[] = '$_GET[' . $key . ']' . str_repeat(' ', 30 - strlen($key)) . '= ' . $this->phpThumbDebugVarDump($value);
         }
     }
     if (isset($_POST) && is_array($_POST)) {
         foreach ($_POST as $key => $value) {
             $DebugOutput[] = '$_POST[' . $key . ']' . str_repeat(' ', 29 - strlen($key)) . '= ' . $this->phpThumbDebugVarDump($value);
         }
     }
     $DebugOutput[] = '';
     $DebugOutput[] = '$this->debugmessages:';
     foreach ($this->debugmessages as $errorstring) {
         $DebugOutput[] = '  * ' . $errorstring;
     }
     return $this->ErrorImage(implode("\n", $DebugOutput), 700, 500);
 }