溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP的內(nèi)置WEB服務(wù)器的使用

發(fā)布時(shí)間:2021-07-13 15:45:09 來(lái)源:億速云 閱讀:122 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“PHP的內(nèi)置WEB服務(wù)器的使用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“PHP的內(nèi)置WEB服務(wù)器的使用”吧!

 

PHP的內(nèi)置WEB服務(wù)器

在很多時(shí)候,我們需要簡(jiǎn)單的運(yùn)行一個(gè)小 demo 來(lái)驗(yàn)證一些代碼或者輪子是否可用,是否可以運(yùn)行起來(lái),但是去配 nginx 或者 apache 都很麻煩,其實(shí),PHP CLI 已經(jīng)提供了一個(gè)簡(jiǎn)單的測(cè)試服務(wù)器,我們直接就可以運(yùn)行起來(lái)進(jìn)行簡(jiǎn)單的一些測(cè)試工作。

 

直接啟動(dòng)一個(gè)內(nèi)置服務(wù)器

php -S localhost:8081
 

直接使用 -S 命令選項(xiàng),然后指定地址及端口號(hào),我們就可以運(yùn)行起來(lái)一個(gè) PHP 內(nèi)置的簡(jiǎn)易WEB服務(wù)器。默認(rèn)情況下,這個(gè)地址會(huì)找當(dāng)前目錄下的 index.php 或 index.html 文件。當(dāng)我們?cè)跒g覽器輸入指定的文件時(shí),就是訪問(wèn)指定的文件,如果都沒(méi)有找到會(huì)正常的返回404錯(cuò)誤。

而控制臺(tái)會(huì)輸出當(dāng)前服務(wù)器的訪問(wèn)情況,如下圖所示:

PHP的內(nèi)置WEB服務(wù)器的使用

這個(gè)內(nèi)置服務(wù)器和用 nginx 等服務(wù)器搭起來(lái)的應(yīng)用服務(wù)器本質(zhì)上沒(méi)有太大的區(qū)別,包括 $_SERVER 之類的內(nèi)容都可以正常獲取到,也可以正常使用 include 等功能加載其他文件,也就是說(shuō)這個(gè)內(nèi)置WEB服務(wù)器運(yùn)行一些框架也是沒(méi)有問(wèn)題的。它是可以完全滿足我們的測(cè)試要求的。但是需要注意的是,這個(gè)內(nèi)置WEB服務(wù)器不能用于生產(chǎn)環(huán)境。畢竟它的功能還是太簡(jiǎn)單,不是一個(gè)生產(chǎn)配備的高規(guī)格服務(wù)器應(yīng)用。

 

指定內(nèi)置服務(wù)器的運(yùn)行目錄

我們也可以在任何目錄去運(yùn)行指定目錄的php代碼,只需要再增加一個(gè) -t 選項(xiàng)來(lái)指明要運(yùn)行起服務(wù)器的根目錄即可。

php -S localhost:8081 -t dev-blog/php/202004/source
 

這樣我們就可以運(yùn)行起來(lái)一個(gè)以 dev-blog/php/202004/source 目錄為根目錄的測(cè)試環(huán)境服務(wù)器。

 

使用路由腳本

php -S localhost:8081 PHP的內(nèi)置WEB服務(wù)器.php
 

如果我們給當(dāng)前服務(wù)器直接指定了一個(gè)PHP文件,那么直接打開(kāi)鏈接就會(huì)訪問(wèn)的是這個(gè)文件的內(nèi)容,而不是去找 index.php 之類的文件。即使我們繼續(xù)給 URL 后臺(tái)增加其他路徑或者其他文件名,它依然會(huì)打開(kāi)的是這個(gè)文件,也就是說(shuō),我們啟動(dòng)了一個(gè)單文件入口的應(yīng)用服務(wù)器程序。就像各種框架的 index.php 文件一樣,比如我們利用這個(gè)文件做一個(gè)簡(jiǎn)單的路由分發(fā)測(cè)試:

$routePages = [
    '/testRoute2.php',
    '/route/testRoute1.php'
];

if(in_array($_SERVER['REQUEST_URI'], $routePages)){
    include __DIR__ . $_SERVER['REQUEST_URI'];
}else{
    print_r($_SERVER);
}
 
// route/testRoute1.php
echo "Hello Route1!";

// testRoute2.php
echo "Hello Route2!";
 

兩個(gè)測(cè)試文件只是簡(jiǎn)單的輸出了一段文字用于區(qū)別分別加載了兩個(gè)文件。上述代碼的意思是我們?cè)L問(wèn)定義好的兩個(gè)路由路徑時(shí),就會(huì)加載對(duì)應(yīng)的文件,訪問(wèn)其他路徑則會(huì)打印當(dāng)前服務(wù)器的 $_SERVER 信息。

測(cè)試代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/PHP%E7%9A%84%E5%86%85%E7%BD%AEWEB%E6%9C%8D%E5%8A%A1%E5%99%A8.php

參考文檔:https://www.php.net/manual/zh/features.commandline.webserver.php

到此,相信大家對(duì)“PHP的內(nèi)置WEB服務(wù)器的使用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI