PHP kézikönyv
Előző
Következő
A 4.3-as verziótól felfelé a PHP támogat egy új SAPI (Server Application Programming Interface) típust, a CLI -t ami a Command Line Interface rövidítése.
A nevéből következik, hogy ez a SAPI típus leginkább shell (vagy akár desktop!) alkalmazások fejlesztéséhez használatos a PHP -ben.
Van néhány különbség a CLI SAPI és a többi SAPI között, ezek magyarázatára a későbbiekben rátérünk.
A CLI SAPI először a PHP 4.2.0 verziójában jelent meg, de akkor még csak kísérleti jelleggel.
Használatához a --enable-cli kapcsolóval kellett indítani a. / configure scriptet installáláskor.
A PHP 4.3.0 megjelenésétől megszűnt a kísérleti státusz és a CLI SAPI mindig beépül a php futtatható binárisba. (Windows alatt ez a php.exe)
Lényegesebb különbségek a CLI SAPI és a többi SAPI között:
A CGI SAPI -val ellentétben soha nem ír ki fejléceket.
Habár a CGI SAPI lehetőséget ad a HTTP fejlécek letiltására egy kapcsolóval, de ez nem egyenértékű a CLI SAPI által nyújtott megoldással.
A CLI alapértelmezetten "csendes" (quiet) módban indul, de a -q kapcsolót megtartották a kompatibilitás érdekében, hogy régebbi CGI szkripteket is problémamentesen lehessen futtatni.
Nem cseréli fel az aktuális könyvtárat az éppen futó szkript könyvtárára. (A -C kapcsolót azért megtartották a kompatibilitás érdekében)
Egyszerű, szöveges hibaüzenetek (nincs HTML formázás).
Vannak php.ini utasítások, melyeket a CLI SAPI egyszerűen figyelmen kívül hagy, mivel nincs közük a shell környezethez:
Táblázat 23-1.
Figyelmen kívül hagyott php.ini utasítások
Utasítás
Magyarázat
A shellben lehetetlen elolvasni a hibaüzeneteket, ha azok zavaros HTML elemekkel tarkítva száguldanak át a képernyőn.
Emiatt ez az utasítás alapértelmezetten FALSE.
Általában azt akarjuk, hogy a print(), echo() és a hasonszőrű függvények mindenképpen írjanak a kimenetre és ne puffereljenek semmit.
De használható a output buffering utasítás, ha a kimenet késleltetése vagy manipulálása a cél.
0 (korlátlan)
Minden eshetőségre felkészülve a PHP nem korlátozza a shell szkriptek futásidejét.
Ez érthető, hiszen míg egy webes szkript általában pár másodperc alatt lefut, addig a shellprogramok nagyon hosszú ideig futhatnak.
A globális PHP változók $argc (a változók számát adja át a szkriptnek) és a $argv (az aktuális változók tömbje) elválaszthatatlanok a parancssori programok futásától és mindig feltöltődnek a megfelelő értékpárokkal, amikor használod a CLI SAPI -t.
Megjegyzés:
Ezek az utasítások nem adhatók meg a fentiektől különböző értékekkel a konfigurációs php.ini fájlban vagy egyéb saját php.ini -ben (ismert, hogy több php.ini is használható, akár könyvtáranként más).
Ez egy korlátozás, mert alapértelmezett értékeik azután aktiválódnak, miután a konfigurációs fájlok lefutottak.
Azonban ezek az értékek változhatnak a szkript futása alatt (ami nincs hatással minden említett utasításra, pl. register_argc_argv).
Hogy kényelmesebbé tegyék a parancssori programozást, néhány konstanst előre definiáltak:
Táblázat 23-2.
Specifikus CLI konstansok
konstansok
Leírás
A fentieknek megfelelően nincs szükség arra, hogy pl. megnyiss egy streamet az stderr -ért, hanem egyszerűen csak használd a konstanst a stream forrás helyett:
A CLI SAPI nem cseréli az aktuális könyvtára a futó szkript könyvtárára!
Szemléletes példa erre a CGI SAPI sajátosságra:
?php / * Ez a mi kis tesztprogramunk;) és az aktuális könyvtárat írja ki, amiben éppen "tartózkodunk ".
Neve: test.php * / echo getcwd(), "\n";?
A CGI verzió használatakor a következőkre számíthatunk:
$pwd / /Linux / Unix alatt kiírja az aktuális könyvtárat / tmp / /az aktuális könyvtár a / tmp $php-cgi -f másik_könyvtár / test.php / tmp / másik_könyvtár
Ugyanez a CLI SAPI -val:
$pwd / tmp $php -f másik_könyvtár / test.php / tmp
Megjegyzés:
A fenti példában a CGI SAPI ugyanúgy viselkedik, mint a CLI SAPI, ha a -C kapcsolóval indítod a szkriptet a parancssorból.
Az alábbi listát a parancssori opciókról a PHP generálta.
Ezt bármikor kilistáztathatod ha a PHP -t a -h kapcsolóval indítod parancssorból:
A CLI SAPI -val háromféleképpen indíthatsz el egy PHP programot:
Hogyan lehet a PHP -vel fájlokat futtatni.
PHP kód futtatása közvetlenül a parancssorból.
Megjegyzés:
A példát figyelmesen szemlélve észrevehetjük, hogy nincsenek nyitó és záró tagok.
Az -r kapcsolóval ezekre nincs szükség.
Ha mégis használod őket, az hibához fog vezetni.
PHP kód futtatása a standard inputon (stdin) keresztül.
Ez a módszer dinamikussá teszi a PHP kód létrehozását és egyből a futtatható binárisba táplálja a kódot, amint a következő (képzeletbeli) példában láthatjuk:
$valami_szkript | valami_filter | php | sort -u eredmeny.txt
Mint minden shellprogram, a PHP bináris, így az általad írt PHP Mint minden shellprogram, a PHP bináris, így az általad írt PHP szkript képes argumentumokat feldolgozni.
Bármennyi argumentumot megadhatsz a szkriptednek, ezek számát nem korlátozza a PHP (A shellben van egy bizonyos határ a megadható argumentumok számát illetően, de az általában bőségesen elég).
A szkriptnek átadott argumentumokat a $argv globális tömb tartalmazza.
A tömb nulladik eleme mindig a szkript neve. (Ez a - karakterjel abban az esetben, ha a PHP kód az -r kapcsolóval lett indítva a parancssorból.) A másik globális tömb a $argc, ami a $argv tömb elemeinek számát tartalmazza (De ez NEM egyenlő a szkriptnek átadott argumentumok számával!).
Amikor különféle opciókkal akarod futtatni egy szkriptet, az argumentumoknak nem szabad - karakterrel kezdődniük.
Ha mégis kiteszed a - jelet, akkor abból könnyen probléma lehet, mert a PHP úgy veszi, mintha a saját opciói közül adnál meg egyet.
Hogy ezt elkerüld, használd a - - szeparátort.
Ez esetben a PHP az argumentumokat változtatás nélkül továbbítja a szkriptnek.
# Ez nem fogja futtatni a megadott kódot, csak szemléltetésre jó. $php -r 'var_dump($argv);' -h Usage: php [options] [-f] file [args...] [...] # Ez átadja a szkriptnek a '-h 'argumentumot és megakadályozza a PHP-t abban, # hogy a sajátjának higgye. $php -r 'var_dump($argv);' - - -h array(2) {[0]= string(1) "-" [1]= string(2) "-h "}
Habár, van egy másik módja a PHP paracssori futtatásának.
Lehet írni olyan programokat, melyek a #! / usr / bin / php sorral kezdődnek és ezt követi a "normál" PHP kód, a szabványos PHP kezdő-és záró tagokkal (valamint a fájl futtatási paramétereinek a beállításai).
Ezzel a módszerrel úgy futtathatjuk programunkat, mint egy normál shell vagy Perl szkriptet:
Táblázat 23-3.
Parancssori opciók
Opció
Leírás
Színesben kiemelt forrását írja ki a szkriptnek.
Ez az opció egy saját algoritmust használ a fájl elemzéséhez, amivel HTML kódot generál a forrásból a standard kimenetre.
Ez a kód tartalmazza a színes kiemeléshez szükséges és az egyéb formázó tag-eket, a szabványos code [...] / code HTML formában, de nem tartalmazza a HTML fejléceket.
Megjegyzés:
Ez az opció nem hazsnálható együtt az -r kapcsolóval.
Kommentek és felesleges sorközök nélkül listázza ki a kódot.
Megjegyzés:
Ez az opció nem használható együtt az -r kapcsolóval.
Értelmezi és futtatja az -f kapcsoló után megadott fájlot.
Ez a kapcsoló opcionális és el lehet hagyni, ha pusztán a fájlnév elegendő a fájl futtatásához.
Kiírja a PHP, PHP SAPI, és a Zend verziószámát a standard kimenetre, pl:
$php -v PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group Zend Engine v1.2.1, Copyright (c) 1998-2002 Zend Technologies
Ha nem a megszokott helyén van, akkor megadhatjuk ezzel a kapcsolóval, hogy hol a php.ini vagy megadhatunk egy saját INI fájlot (aminek nem muszáj php.ini nevet adni!), pl..:
#ezzel megmondjuk a PHP-nek, hogy a / saját / könyvtárban találja a php.ini-t $php -c / saját / könyvtár / maszek.php #ez pedig utasítja PHP-t, hogy a / saját / könyvtárban / levő saját.ini-t #vegye alapul a maszek.php szkript futtatásakor. $php -c / saját / könyvtár / saját.ini maszek.php
Interaktívan futtatja a PHP-t.
Ezzel az opcióval bármilyen konfigurációs utasítást, ami csak a php.ini -ben megtalálható, egy saját értékkel érvényesíthetünk a szkript futásának idejére.
Az általános formája a következő:
-d konfigurációs_utasítás[ =érték]
Példák:
# Az értéket elhagyva a megadott konfigurációs utasításhoz az "1" értéket # rendeli. $php -d max_execution_time -r '$foo = ini_get("max_execution_time"); var_dump($foo); 'string(1) "1 "# Ha csak egy szóközt nyomunk az érték helyett, akkor a konfigurációs # utasításnak az" "értéket adja. php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); var_dump($foo);' string(0)" "# A konfigurációs utasítás értéke az lesz, amit az egyenlőségjel után írunk: $php -d max_execution_time=20 -r '$foo = ini_get("max_execution_time"); var_dump($foo); 'string(2) "20" $php -d max_execution_time=fogalmamsincsen -r '$foo = ini_get("max_execution_time"); var_dump($foo);' string(15) "fogalmamsincsen "
A hibakeresést segíti részletes információk kiírásával.
Betölti a Zend bővítményt.
Ha csak a futtatandó szkript nevét adtuk meg utána, akkor a PHP megpróbálja ezt a bővítményt a rendszereden alapértelmezett függvéykönyvtár (library) útvonal alapján betölteni (Ez általában az / etc / ld.so.conf fájlban van definiálva a Linux rendszereken).
Ha megadsz egy konkrét útvonalat, akkor a PHP ezt veszi alapul, nem pedig a rendszer általit.
Relatív útvonalat is megadhatsz a PHP -nek, hogy az aktuális könyvtárhoz képest hol keresse a bővítményt.
Segítségével kényelmesen elvégezhető a szintaktikai ellenőrzés egy megadott PHP kódon.
Ha nincs hiba, a standard kimenetre kiírja, hogy No syntax errors detected in filename És a shell visszatérési értéke 0.
Hiba esetén a szöveg Errors parsing filename, majd kiírja a standard kimenetre a megérdemelt hibaüzenetet és a shell visszatérési értéke 255 lesz.
Ez az opció nem jelzi a végzetes hibákat (mint pl. egy definiálatlan függvény).
Használd ezt az -f kapcsolóval együtt, ha végzetes hibákat is akarsz találni.;)
Megjegyzés:
Ez az opció nem használható együtt az -r kapcsolóval.
Eme opció használatával a PHP kilistázza a beépített (és betöltött) PHP és Zend modulokat:
Ez a parancsori opció meghívja a phpinfo() függvényt és kiírja az eredményét.
Ha a PHP furcsán viselkedik, ajánlatos kiadni a parancssorban egy php -i -t és figyelmesen elolvasni a hibaüzeneteket a táblázatokban.
Készülj fel rá, hogy a kimenet HTML formázott, így a parancssorban szinte olvashatatlan. (Irányítsd át a kimenetet egy HTML fájlba (php -i phpinfo.html) és nézd meg egy böngészővel.)
Ez az opció teszi lehetővé, hogy PHP parancsokat adjunk ki közvetlenül a parancssorból.
A kezdő és a záró PHP tagok (?php és?) NEM KELLENEK és hibához fog vezetni, ha mégis alkalmazod őket.
Megjegyzés:
Óvatosan kell bánni ezzel a parancssori PHP futtatási módszerrel, nehogy a változó helyettesítés miatt összeakadjon a shellel.
Példa egy ilyen hibára
Ezzel az opcióval lehet információt szerezni az aktuális parancssori opciókról és néhány sornyi magyarázatot hozzájuk.
Példa 23-1.
In the script above, we used the special first line to indicate, that this file should be run by PHP.
Példa 23-2.
@c:\php\php.exe script.php %1 %2 %3 %4
Assuming, you named the above program as script.php, and you have your php.exe in c:\php\php.exe this batch file will run it for you with your added options: script.bat echothis or script.bat -h.
Előző
Tartalom
Következő
Fel
Függvény referencia