I use php -S localhost:8000
as my development server. At the end I'll use nginx. But I have a problem with php server.
root
|
|---/app
|
|---/index.html
|---/scripts
| |
| |---/main.css
|
|---/styles
|
|---/main.js
In my app/index.html
I have:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles/main.css" type="text/css" />
</head>
<body>
<script src="scripts/main.js"></script>
</body>
</html>
When I open the page in my browser with localhost:8000/app
the css and javascript can't be find. The browser is looking for localhost:8000/styles
resp. localhost:8000/scripts
instead of localhost:8000/app/styles
resp. localhost:8000/app/scripts
. When I directly open the file withouth server or with nginx, the files are found correctly. So the php server changes something. What's going on here?
I tried it in Chrome and Firefox. Same behavior in both browsers. When I open the website with localhost/app
(nginx
) everything works as expected. When I open the website with localhost:8000/app
(php -S localhost:8000
) the scripts and styles can't be found. It's the same files with the same file root. Where comes the different behavior from?
After checking the offical docs on PHP: Built-in web server it clearly states:
URI requests are served from the current working directory where PHP was started, unless the -t option is used to specify an explicit document root.