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) { if (isset($_GET['backend'])) { $backend = $_GET['backend']; } elseif (file_exists($target)) { return; } else { $backend = 'exec'; } $backend = "mkthumb_$backend"; @mkdir(dirname($target), 0777, TRUE); $backend($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); } }