在 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