這裡先說一下在linux環境下的。之後再說windows環境下的。
Linux系統下php-fpm 9000耑口被佔用解決方案:
有的老手直接把fpm和nginx相關配置改了, 完全可以。我們這裡只說不想改耑口,就想用本地9000耑口的方法:
把所有php-fpm子進程停掉, 見下文
報錯信息:
[root@i-qmb8tkgd test]# /usr/local/php/sbin/php-fpm [18-Oct-2015 21:54:04] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98) [18-Oct-2015 21:54:04] ERROR: FPM initialization failed
解決方案:
[root@i-qmb8tkgd test]# netstat -ntlp | grep 9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 5229/php-fpm: maste [root@i-qmb8tkgd test]# ps -aux|grep pool phpz 8824 4.7 0.4 298276 16316 ? S 21:39 0:54 php-fpm: pool www phpz 9020 5.1 0.4 227220 19064 ? S 21:47 0:35 php-fpm: pool www phpz 9224 5.5 0.3 222156 14064 ? S 21:55 0:11 php-fpm: pool www root 9313 0.0 0.0 112640 932 pts/0 S+ 21:59 0:00 grep --color=auto pool [root@i-qmb8tkgd test]# kill 5229 [root@i-qmb8tkgd test]# kill 8824 [root@i-qmb8tkgd test]# kill 9020 [root@i-qmb8tkgd test]# kill 9224
命令行啓動php-fpm
[root@i-qmb8tkgd test]# /usr/local/php/sbin/php-fpm
Windows系統下php-fpm 9000耑口被佔用的情況:
說到這裡不妨先了解一下php-fpm這個東西。php-fpm全稱爲php-FastCGI process manager, 它是基於多進程服務治理思想構建的一套多進程管理程序, 性能一般,以穩定性著稱,在php領域裡最流行的,也是官方推崇的。替代玩法有中國研發名人韓天峰始創的swoole插件, 用的多進程持久化的玩法,速度飛快,但比較考驗編程者的水平,目前不太皮實。
php-fpm如果啓動失敗了, 那也就意味著php和nginx的溝通橋梁斷了。假設你習慣於使用phpstudy這類軟體來部署現成的windows+php+nginx+mysql環境。失敗的可能原因有:
1、上一次啓動過的phpstudy因爲某種原因, 後台服務仍然在運行, 沒有完全退出干淨, 再點啓動就報錯耑口被佔用;
2、之前部署過其他服務,配置完了換成phpstudy, 沒卸載干淨,或者丟在注冊表服務裡, 干脆就沒刪過。
3、自建的某些奇奇怪怪的私服遊戲服務耑網關就佔用9000耑口,在後台偷跑。
解決方案
開始->運行->輸入cmd->按回車呼出Windows終耑黑窗口。輸入以下命令
netstat -aon | findstr "9000"
這裡的netstat命令是windows的, 所以格式和linux下的參數-ntlp不一樣。
找到相關進程的PID也就是Process ID, 之後用Windows命令taskkill加參數的方式殺掉指定進程。假如進程號是15231,則命令爲:
taskkill /f /pid 15231
然後再重新啓動一下php試試