Artisan Error: Failed to listen on localhost:8000


Artisan Error: Failed to listen on localhost:8000

在 Laravel 中我們可以使用 php artisan serve --port 8000 來啟動 Laravel Server 或是可以直接不指定 port php artisan serve Laravel Server 就會自動在預設的 port 8000 上 running,預期中我們在 Command 介面中會得到下面的樣子。

~/learn/php/laravel  php artisan serve --port 8000
Starting Laravel development server: http://127.0.0.1:8000
[Tue Jun  1 14:04:49 2021] PHP 8.0.6 Development Server (http://127.0.0.1:8000) started
[Tue Jun  1 14:05:09 2021] 127.0.0.1:50150 Accepted

但有時我們會看到 php artisan serve --port 8000 出現 Failed to listen on 127.0.0.1:8000 或是 php artisan serve 無法啟動在 port 8000 跑去其他的 port 上了。

~/learn/php/laravel  php artisan serve --port 8000
Starting Laravel development server: http://127.0.0.1:8000
[Wed Jun  2 12:39:02 2021] Failed to listen on 127.0.0.1:8000 (reason: Address already in use)

此時我們可以使用ps -ef | grep php 列出 php 相關的 process

~/learn/php/laravel  ps -ef | grep php
  501 81656 58221   0 12:38下午 ttys006    0:00.17 php artisan serve --port 8000
  501 81660 81656   0 12:38下午 ttys006    0:00.04 /usr/local/Cellar/php/8.0.6_1/bin/php -S 127.0.0.1:8000 /Users/akiwang/learn/php/laravel/server.php
  501 81735 58221   0 12:39下午 ttys006    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn php

可以看到 process 81656 正在執行 php artisan serve --port 8000 所以才會造成 Failed to listen on 127.0.0.1:8000 因此我們要將他刪除,可以使用指令kill -9 81656 將其刪除。

注:如果看到列表中有很多個 php artisan serve --port 800X 的 process 那也最好都 kill 掉。

~/learn/php/laravel  kill -9 81656
[1]  + 81656 killed     php artisan serve --port 8000     

此時再次 ps -ef | grep php 就不會顯示有 php artisan serve --port 8000 的 process

~/learn/php/laravel  ps -ef | grep php
  501 81811 58221   0 12:39下午 ttys006    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn php

最後我們就可以順利執行 php artisan serve --port 8000 將 Laravel Server running 在 port 8000 上啦!

~/learn/php/laravel  php artisan serve --port 8000
Starting Laravel development server: http://127.0.0.1:8000
[Wed Jun  2 12:39:31 2021] PHP 8.0.6 Development Server (http://127.0.0.1:8000) started

模擬上述所有流程

~/learn/php/laravel  php artisan serve --port 8000
Starting Laravel development server: http://127.0.0.1:8000
[Wed Jun  2 12:38:46 2021] PHP 8.0.6 Development Server (http://127.0.0.1:8000) started
^Z
[1]  + 81656 suspended  php artisan serve --port 8000
~/learn/php/laravel  php artisan serve --port 8000  
Starting Laravel development server: http://127.0.0.1:8000
[Wed Jun  2 12:39:02 2021] Failed to listen on 127.0.0.1:8000 (reason: Address already in use)
~/learn/php/laravel  ps -ef | grep php
  501 81656 58221   0 12:38下午 ttys006    0:00.17 php artisan serve --port 8000
  501 81660 81656   0 12:38下午 ttys006    0:00.04 /usr/local/Cellar/php/8.0.6_1/bin/php -S 127.0.0.1:8000 /Users/akiwang/learn/php/laravel/server.php
  501 81735 58221   0 12:39下午 ttys006    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn php
~/learn/php/laravel  kill -9 81656
[1]  + 81656 killed     php artisan serve --port 8000                                                                                                                                                     
~/learn/php/laravel  ps -ef | grep php
  501 81811 58221   0 12:39下午 ttys006    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn php
~/learn/php/laravel  php artisan serve --port 8000
Starting Laravel development server: http://127.0.0.1:8000
[Wed Jun  2 12:39:31 2021] PHP 8.0.6 Development Server (http://127.0.0.1:8000) started

WRITTEN BY
Aki

熱愛寫code的開發者,專注於 Android 手機 Native App 開發,對於 IOS 也有涉略。閒暇之餘也學習 JavaScript 等前端框架