fix: improve error handling and streamline screenshot response in index.php

This commit is contained in:
2026-04-19 21:58:00 +02:00
parent 4a548f50e7
commit 7616dee994

View File

@@ -6,6 +6,10 @@ use Facebook\WebDriver\Remote\DesiredCapabilities;
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__) . DS . '..');
// increase PHP timeout - rendering can take 60s+
set_time_limit(120);
ignore_user_abort(true);
require_once(ROOT . DS . 'src' . DS . 'config.inc.php');
require_once(ROOT . DS . 'src' . DS . 'helpers.php');
require_once(ROOT . DS . 'src' . DS . 'http2pic.class.php');
@@ -71,13 +75,11 @@ switch ($url[0]) {
addToLog("$ip\tRequested $target with viewport " . $viewportLabel . " and js " . ($js ? 'enabled' : 'disabled'));
// take screenshot and send to user
$screenshot = $driver->takeScreenshot();
header('Content-Type: image/png');
echo $driver->takeScreenshot();
header('Content-Length: ' . strlen($screenshot));
echo $screenshot;
} catch (Exception $e) {
// ensure driver is closed to free ChromeDriver memory
if ($driver instanceof \Facebook\WebDriver\Remote\RemoteWebDriver) {
try { $driver->quit(); } catch (Exception $qe) {}
}
header('HTTP/1.0 500 Internal Server Error');
addToLog("$ip\tRequested $target but resulted in error:\t" . $e->getMessage());
echo 'Error: ' . $e->getMessage();