PHP搭建Web服务器,服务压根不需要装什么重型武器。服务我见过太多人一上来就直奔Apache或Nginx,服务配置半天,服务最后连个“Hello World”都没跑起来。服务其实,服务PHP自带的服务开发服务器,在你写代码、服务做测试的服务时候,完全够用,服务而且快得让你怀疑人生。服务
打开终端,服务进入你的服务项目目录,敲下这行命令:
php -S localhost:8000 就这?服务就这。你的服务Web服务器已经跑起来了。浏览器打开 http://localhost:8000,看到那个熟悉的页面了吗?没有?那可能是因为你的目录里没有index.php。放一个进去,写上 <?php echo "活了"; ?>,刷新,看见了没?这就是你的第一个PHP服务器。
这个内置服务器不是玩具。它支持路由,支持静态文件,甚至支持PHP的$_SERVER变量。你写个REST API测试,用它完全没问题。我有个朋友,用这个内置服务器跑了一个小型的CRM系统,对接了数据库,跑了三个月,直到上线才换到正式的Nginx环境。你说它不行?它只是不想张扬。
但你得知道它的边界。它单线程,处理并发请求的能力弱,一旦有请求卡住,后面的全得排队。而且它没有HTTPS支持,也没有虚拟主机配置。你要是想搞生产环境,那还是得老老实实上Nginx或者Apache。但那是后话,现在你只需要关心代码能不能跑。
换个玩法。你不想用PHP自带服务器,嫌它太素。那就装个Nginx,配PHP-FPM。这个组合是当前PHP的主流搭配。Nginx负责接收请求,静态文件它自己处理,遇到PHP文件就扔给PHP-FPM去执行。这种分工明确的做法,让Nginx在处理高并发时游刃有余。
配置也不复杂。装好Nginx和PHP-FPM后,找到Nginx的配置文件,加一个server块:
server { listen 80; server_name localhost; root /var/www/html; index index.php; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } 重启服务,搞定。这里有个坑你得注意:fastcgi_pass的socket路径,要和你系统里实际安装的PHP版本对上。我一开始装的是PHP 8.2,结果socket路径写成了8.1的,折腾了半天才反应过来。这种低级错误,谁犯谁知道。
至于Apache,它比Nginx更传统,.htaccess文件支持是它的老本行。如果你用的是共享主机,大概率就是Apache。配置上,Apache的模块化设计让它看起来很臃肿,但胜在稳定。你要是写个WordPress插件或者Magento商城,Apache的兼容性会让你省心不少。
说句实在话,生产环境选Nginx还是Apache,争论了十几年也没定论。但我的经验是:如果你追求性能,选Nginx;如果你追求省事,选Apache。不过,你要是用PHP 8以上的版本,配上OPcache扩展,哪个服务器跑起来都不慢。
最后提醒一句,别在服务器上装那些花里胡哨的控制面板。面板确实方便,但出了问题,你连日志在哪儿都找不到。手动配置一次,比你看十篇教程都管用。干这行,动手永远是第一位的。