<?php declare(strict_types=1); /* * A small number of PHP-sanity things (eg don't silently ignore errors) to * be included right at the very start of index.php and tests/bootstrap.php */ function die_nicely($title, $body, $code=0) { print("<!DOCTYPE html> <html lang='en'> <head> <title>Shimmie</title> <link rel=\"shortcut icon\" href=\"ext/static_files/static/favicon.ico\"> <link rel=\"stylesheet\" href=\"ext/static_files/style.css\" type=\"text/css\"> </head> <body> <div id=\"installer\"> <h1>Shimmie</h1> <h3>$title</h3> <div class=\"container\"> $body </div> </div> </body> </html>"); if ($code != 0) { http_response_code(500); } exit($code); } $min_php = "7.3"; if (version_compare(phpversion(), $min_php, ">=") === false) { die_nicely("Not Supported", " Shimmie does not support versions of PHP lower than $min_php (PHP reports that it is version ".phpversion()."). ", 1); } # ini_set('zend.assertions', '1'); // generate assertions ini_set('assert.exception', '1'); // throw exceptions when failed set_error_handler(function ($errNo, $errStr) { // Should we turn ALL notices into errors? PHP allows a lot of // terrible things to happen by default... if (str_starts_with($errStr, 'Use of undefined constant ')) { throw new Exception("PHP Error#$errNo: $errStr"); } else { return false; } }); ob_start(); if (PHP_SAPI === 'cli' || PHP_SAPI == 'phpdbg') { if (isset($_SERVER['REMOTE_ADDR'])) { die("CLI with remote addr? Confused, not taking the risk."); } $_SERVER['REMOTE_ADDR'] = "0.0.0.0"; $_SERVER['HTTP_HOST'] = "cli-command"; }