<?php
declare(strict_types=1);
$php_version = \PHP_VERSION;
$php_major = (float) \substr($php_version, 0, 3);
// Define SIGKILL if pcntl is not found
if (!\function_exists('pcntl_signal')) {
\define('SIGKILL', 9);
}
if ($php_major < 5.4 || \stripos(\PHP_OS, 'WIN') === 0) {
\define('WITHOUT_SERVER', true);
} else {
// Command that starts the built-in web server
$serverLogFile = './server.log';
\touch($serverLogFile);
/** @noinspection PhpUndefinedConstantInspection */
$command = \sprintf('php -S %s:%d -t %s > ' . $serverLogFile . ' 2>&1 & echo $!', WEB_SERVER_HOST, WEB_SERVER_PORT, WEB_SERVER_DOCROOT);
// Execute the command and store the process ID
$output = [];
\exec($command, $output, $exit_code);
// sleep for a second to let server come up
\usleep(500);
$pid = (int) $output[0];
// check server.log to see if it failed to start
$serverLogData = (string) \file_get_contents($serverLogFile);
if (\strpos($serverLogData, 'Fail') !== false) {
// server failed to start for some reason
echo 'Failed to start server! Logs:' . \PHP_EOL . \PHP_EOL;
/** @noinspection ForgottenDebugOutputInspection */
\print_r($serverLogData);
exit(1);
}
/** @noinspection PhpUndefinedConstantInspection */
echo \sprintf('%s - Web server started on %s:%d with PID %d', \date('r'), WEB_SERVER_HOST, WEB_SERVER_PORT, $pid) . \PHP_EOL;
\register_shutdown_function(static function () {
// cleanup after ourselves -- remove log file, shut down server
global $pid;
\unlink('./server.log');
\posix_kill($pid, \SIGKILL);
});
}
\define('TEST_SERVER', WEB_SERVER_HOST . ':' . WEB_SERVER_PORT);
|