Why does file_get_contents work with google.com but not with my site?
For anyone having this problem using PHP Built-in web server (with Laravel in my case), it is caused by your request being blocked by file_get_contents() / curl functions.
Docs of dev server say that
PHP applications will stall if a request is blocked.
Since the PHP built-in server is single threaded, requesting another url on your serverwill halt first request and it gets timed out.
As a solution, you can use proper web server (nginx, apache etc.).
Edit: As of now, I really suggest you to use Laravel Sail as a development environment for PHP projects. It saves you lots of time with setup and configuration of different services (webserver, databases, queues, etc.).
As zub0r pointed out, the built-in PHP server is single threaded. If you do not want to install and configure a web server like nginx, and do not want to use Homestead or Valet, there is another easy solution:
Start another instance of your build-in PHP server with another port and use this in the internal requests of your app.
php -S localhost:8000\\ in another consolephp -S localhost:8001
I use this in my Laravel app when I request some local dummy API via Guzzle and it works fine.