В интерпретатор php встроен веб-сервер. Откроем справку по параметрам запуска php из командной строки, чтобы узнать параметры запуска php web сервера.

php -S
Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   php [options] -S <addr>:<port> [-t docroot] [router]
   php [options] -- [args...]
   php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No configuration (ini) files will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.

root@debian:/home/dior/www# php -S 192.168.12:8080
[Sat Mar  7 00:28:28 2020] Failed to listen on 192.168.12:8080 (reason: Cannot assign requested address)

Нас интересуют 2 параметра -S и -t

Создайте папку для сервера, например www в своём рабочем каталоге, поместите туда файл favicon.ico и index.html. Http.server (веб-сервер) поддерживает структуру каталогов. Можно создать подпапки. Перейдите в папку www и запускайте сервер:

dior@debian:~/www$ php -S 192.168.1.12:8080
PHP 7.3.14-1~deb10u1 Development Server started at Sat Mar  7 00:30:26 2020
Listening on http://192.168.1.12:8080
Document root is /home/dior/www
Press Ctrl-C to quit.
[Sat Mar  7 00:31:04 2020] 192.168.1.19:51378 [200]: /
[Sat Mar  7 00:31:04 2020] 192.168.1.19:51380 [200]: /css/main.css
[Sat Mar  7 00:31:04 2020] 192.168.1.19:51386 [200]: /js/flame.js
[Sat Mar  7 00:31:04 2020] 192.168.1.19:51388 [200]: /favicon.ico

Для экспериментов предлагаем наши файлы веб страницы index.html (пути указаны относительно папки www в которой запущен сервер):

index.html

<HTML>
<HEAD>
<META charset="utf-8" />
<LINK href="/css/main.css" rel="stylesheet" />
</HEAD>
<BODY id="body">
<H1>Привет мир!</H1>
<SCRIPT src="/js/flame.js" type="text/javascript"></SCRIPT>
</BODY>
</HTML>

Важно: для этого сервера все относительные пути к файлам, указанным в html файле считаются относительными корня сервера (в нашем случае папка www).

/css/main.css

body{
    font-size: 1000%;
    text-align: center;
    background-color: midnightblue;
    color: moccasin;
    text-shadow: red -6px 6px 8px;
  }

/js/flame.js

i=0; id=1; j=0; jd=1; k=0; kd=1;
setInterval("animate()", 80);
function animate(){
  body.style.textShadow = i+'px '+j+'px '+k+'px red'
  i=i+id; j=j+jd; k=k+kd;
  if (i>23) id=-1;
  if (i<-27) id=1;
  if (j>19) jd=-1;
  if (j<-17) jd=1;
  if (k>31) kd=-1;
  if (k<13) kd=1;
}

И, вы получитe результат: