Si të testoni me shpejtësi faqet e internetit me serverin e integruar të uebit të PHP


Keni nevojë të filloni shpejt një server në internet për të testuar një aplikacion PHP? Përkthyesi PHP ka një të integruar! Ju mund ta përdorni këtë për të inspektuar me shpejtësi punën tuaj pa ekzekutuar Apache, NGINX ose një zgjidhje kontejnerizimi.

Serveri i integruar i PHP merr relativisht pak vëmendje, por është mjaft i fuqishëm për qëllime zhvillimi. Në këtë udhëzues, ne do të tregojmë se si mund ta përdorni si një alternativë ndaj mikro-serverëve të tjerë si SimpleHTTPServer i Python ose paketa npm e serverit http, asnjëri prej të cilëve nuk mund të ekzekutojë skriptet PHP.

Duke përdorur serverin e integruar

Serveri i integruar është një mekanizëm komod për t'ju ndihmuar të testoni faqet PHP në mjedise që nuk kanë një server HTTP të plotë. Është në dispozicion në PHP 5.4 dhe të gjitha versionet e mëvonshme. Mund ta ekzekutoni direkt nga drejtoria juaj e punës pa pasur nevojë të konfiguroni më parë një host virtual.

Para se të përdorni serverin, paralajmërohuni se ai është krijuar vetëm për përdorim në zhvillim. Dokumentacioni PHP paralajmëron në mënyrë eksplicite kundër vendosjes së këtij serveri përpara aplikacioneve të prodhimit. Nuk është mjaftueshëm e sigurt për t'u ekspozuar në rrjete të aksesueshme publikisht.

Nisja e serverit

Serveri niset duke kaluar flamurin -S te ekzekutuesi php:

$ php -S localhost:8080
[Fri Jun 10 16:00:00 2022] PHP 8.1.5 Development Server (http://localhost:8080) started

Argumenti i dhënë komandës specifikon adresën e dëgjimit të serverit. Ne kemi përdorur portin 8080localhost në shembullin e mësipërm. Tani mund të vizitoni http://localhost:8080 në shfletuesin tuaj të internetit për të hyrë në përmbajtjen në drejtorinë tuaj të punës. Çdo skript PHP do të ekzekutohet automatikisht kur t'i kërkoni.

Ju mund të shërbeni një shteg që është jashtë drejtorisë suaj të punës duke vendosur flamurin -t kur filloni serverin:

$ php -S localhost:8080 -t /home/$USER/public_docs

Rrënja e dokumentit tani do të jetë /public_docs brenda dosjes tuaj kryesore.

Mbajeni dritaren e terminalit tuaj të hapur ndërsa jeni duke përdorur serverin në internet. Shtypni Ctrl+C për të vrarë procesin pasi të keni mbaruar testimin e faqes tuaj. PHP do të regjistrojë çdo kërkesë hyrëse në dritaren tuaj të terminalit, duke përfshirë metodën URI dhe HTTP. Çdo gabim i pakapur PHP do të shfaqet gjithashtu në regjistrat.

Aktivizimi i qasjes në distancë

Dëgjimi në localhost nuk do të lejojë lidhjet hyrëse nga pajisjet e tjera në rrjetin tuaj. Ju mund të lejoni qasjen në distancë duke u lidhur me 0.0.0.0 në vend të kësaj:

$ php -S 0.0.0.0:8080

Mos harroni se serveri nuk është i ngurtësuar për përdorim prodhimi dhe nuk duhet të ekspozohet publikisht. Lejo qasjen në distancë vetëm kur është absolutisht e nevojshme, si p.sh. kur teston një veçori të veçantë në një pajisje celulare. Sigurohuni që porti që përdorni të mos jetë i hapur për internetin.

Kërkoni përputhje kthimi

PHP do të kërkojë skedarët index.php dhe index.html në rrënjën aktive të dokumentit kur kërkesës në hyrje i mungon një komponent URI. Nëse asnjë prej këtyre skedarëve nuk ekziston, serveri do të vazhdojë të lëvizë lart në pemën e drejtorisë, duke kërkuar një indeks në një nga prindërit e rrënjës së dokumentit tuaj. Kjo do të thotë që ju mund të përfundoni pa dashje duke shërbyer përmbajtje që ndodhet jashtë drejtorisë që keni specifikuar. Një status 404 Not Found do të lëshohet kur të arrihet maja e pemës pa u gjetur një skedar indeksi.

Kërkesat që përfshijnë një URI (si p.sh. /file) duhet të përputhen saktësisht me një skedar statik në rrënjën e dokumentit. Përndryshe një 404 do të kthehet. PHP vendos automatikisht titullin e përgjigjes Content-Type në llojin MIME të skedarit të shërbyer për shtesat më të njohura të skedarëve.

Përdorimi i një skripti ruteri

Mund të konfiguroni opsionalisht serverin e uebit për të thirrur një skript në çdo kërkesë. Kjo ju lejon të përdorni kontrolluesin e përparmë të aplikacionit tuaj për të kryer një rrugëtim dinamik të avancuar.

Funksionaliteti i ruterit aktivizohet duke dhënë një emër skedari PHP në vijën e komandës kur filloni serverin:

$ php -S localhost:8080 router.php

PHP tani do të përdorë router.php për të trajtuar çdo kërkesë hyrëse. Ju mund t'i drejtoni përdoruesit në pikën e duhur në aplikacionin tuaj duke inspektuar URI-në e kërkesës:

if ($_SERVER["REQUEST_URI"] === "/dashboard") {
    require_once("dashboard.php");
}
else if ($_SERVER["REQUEST_URI"] === "/profile") {
    require_once("profile.php");
}
else {
    require_once("404.php");
}

Prodhimi i prodhuar nga skripti juaj i ruterit do të bëhet përgjigja që i dërgohet klientit. Një përjashtim është nëse skripti kthen false: në këtë rast, PHP do të kthejë skedarin statik që përputhet me URI-në e kërkesës origjinale.

if (str_starts_with($_SERVER["REQUEST_URI"], "/api")) {
    // Route to the correct API endpoint
    // ... 
}
else {
    // Serve other routes statically
    return false;
}

Zbulimi i serverit të integruar nga kodi juaj PHP

Kodi juaj PHP mund të zbulojë nëse thirret nga serveri i integruar i uebit duke inspektuar emrin e ndërfaqes aktive. Funksioni php_sapi_name() ofron këtë vlerë. Do të vendoset në cli-server kur skripti thirret nga komponenti i integruar i serverit.

if (php_sapi_name() === "cli-server") {
    enable_development_mode();
}

Trajtimi i kërkesave të shumta njëkohësisht

Serveri si parazgjedhje funksionon në një modalitet sinkron me një proces të vetëm. Kërkesat trajtohen individualisht dhe bllokojnë njëra-tjetrën nga ekzekutimi deri në përfundimin e tyre. Kjo është një nga arsyet pse serveri është i papërshtatshëm për përdorim prodhimi.

PHP 7.4 shtoi mbështetje për trajtimin e kërkesave të shumta njëkohësisht. Ai mbështetet në disponueshmërinë e fork() dhe nuk funksionon në Windows. Serveri do të detyrojë një punonjës të ri për të shërbyer çdo kërkesë hyrëse kur ky modalitet është i aktivizuar. Mund ta aktivizoni duke vendosur variablin e mjedisit PHP_CLI_SERVER_WORKERS me numrin e punëtorëve që dëshironi:

$ PHP_CLI_SERVER_WORKERS=8 php -S localhost:8080

Ky funksionalitet është ende i shënuar si eksperimental në PHP 8.1.

Përmbledhje

PHP ka një server të integruar në ueb që është një mënyrë e përshtatshme për të testuar aplikacionet tuaja dhe për të ekspozuar shpejt përmbajtjen e sistemit të skedarëve lokalë në rrjetin tuaj lokal. Ai mbështet ekzekutimin e skriptit PHP, rutinimin e të gjithëve dhe skedarët statikë me llojet më të zakonshme MIME.

Megjithëse serveri tani mbështet një modalitet të detyrueshëm opsional, nuk këshillohet ta përdorni atë në prodhim. Është menduar si një ndihmë zhvillimi dhe i mungojnë veçoritë e personalizimit dhe të sigurisë që do t'ju nevojiten për vendosjet tuaja publike. Ajo ku shkëlqen është si një alternativë e lehtë dhe e integruar ndaj platformave konvencionale të zhvillimit si kontejnerët WAMP, XAMPP dhe Docker.


Të gjitha të drejtat e rezervuara. © Linux-Console.net • 2019-2024