getCode() ?: 500); $target = '500.png'; if (file_exists($target)) { header("X-Error: ".$e->getMessage()); header('Content-type: '.mime_content_type($target)); readfile($target); exit; } trigger_error("thumbnail creation failed: ".$e->getMessage(), E_USER_WARNING); exit; } } header('Content-type: '.mime_content_type($target)); readfile($target); exit; function mkthumb($source, $target, $width, $height) { @mkdir(dirname($target), 0777, TRUE); return mkthumb_exec($source, $target, $width, $height); } function mkthumb_exec($source, $target, $width, $height) { if (!function_exists('popen')) { throw new Exception("exec disallowed on this server", 501); } $cmd = implode(' ', array_map('escapeshellarg', [ 'convert', '-trim', '-resize', "${width}x${height}", '-quality', '90%', $source, $target ])); $return = shell_exec("$cmd 2>&1"); if ($return) { throw new Exception($return); } }