Cum se rulează fișierul php pe windows xp. Executarea fișierelor PHP

Voi face imediat o rezervă că tot ceea ce va fi discutat în acest articol este aplicabil numai pentru sistemele de operare asemănătoare Unix și nu va funcționa sub Windows. Exact despre asta vorbim alternativă la coroană. Iubitorii de Windows ghinionişti vor trebui să evoce cu "Planificator de sarcini" - Magie neagră va rămâne inaccesibil pentru ei :) În plus, veți avea nevoie acces ssh, și în mod ideal - acces pentru scripturi php la linia de comandă.

Ce este un program daemon și cum se scrie un daemon în PHP

Daemon(daemon, daemon, zeitate greacă veche δαίμων) - program de calculatorîn sisteme de clasă UNIX, lansate de sistemul însuși și care rulează fundal fără interacțiune directă cu utilizatorul. Demonii pornesc de obicei în timpul pornirii sistemului.

Aplicabil pentru PHP, este un script care poate rula singur, fără oprire și fără interacțiunea utilizatorului. Cum să obțineți un astfel de scenariu? De fapt, este foarte simplu, trebuie doar să încalci una dintre primele reguli de programare pe care le predau la școală și creați o buclă infinită:

// Pentru ca programul să funcționeze constant, pur și simplu trebuie să funcționeze constant;) while(1) ( // Codul Daemon va fi localizat aici // ... // Timpul de somn al Daemonului între iterații (depinde de nevoile sistem) somn(1);

Codul imposibil de simplu ridică încă mai multe întrebări. Cum să-l lansez? Cum să urmăriți implementarea acestuia? Cum să-l oprești?

Cum să porniți un daemon php

Cum rulați scripturile PHP în general? Dacă aceasta este o aplicație web, atunci folosind un browser și un server web. Dar această opțiune nu este potrivită, deoarece avem de-a face cu un script fără sfârșit, iar timpul de execuție al scripturilor este limitat de directivă timp_max_execuție V php.ini. Prin urmare, un script fără sfârșit trebuie să fie rulat prin consolă, pentru că atunci timp maxim nu se ia in calcul finalizarea lui. Comanda de pornire a demonului arată cam așa:

PHP -f /cale/la/daemon.php &

Pentru pornire manuală trebuie introdus în terminalul ssh (putty, WinSCP etc.), iar pentru ca acesta să fie lansat de sistem la boot - în fișierul de pornire corespunzător (poziția și numele fișierului depind de sistem de operare). Vă rugăm să rețineți că consola scriptul daemon rulează în fundal, fără a implica utilizatorul în așteptarea finalizării acestuia (la urma urmei, scriptul este nesfârșit). Abilitatea de a rula un proces în fundal este motivul pentru care metoda pe care o descriu nu este potrivită pentru serverele Windows. După lansare, consola ar trebui să se afișeze ID proces demonul nostru, așa-numitul PID.

Urmărirea și oprirea demonilor

Puteți verifica dacă procesul demon rulează prin simpla deschidere a listei de procese din sistem:

PS-aux

Este ușor să găsiți demonul în lista de procese, atât prin comanda de lansare, cât și prin PID:

UTILIZATOR PID %CPU %MEM VSZ RSS TTY STAT START TIME COMANDA ... root 22193 0.1 0.2 393180 72132 ? S Apr24 5:05 php -f /path/to/your/daemon.php &

Opriți procesul demonului o poți face în același mod ca orice alt proces:

Omoară xxxx

În exemplul dat, xxxx este PID, identificatorul procesului.

Este demn de remarcat faptul că acest lucru nu oprește, ci mai degrabă „ucide” procesul demonului. Cert este că scenariul va fi întrerupt oriunde, ceea ce nu este întotdeauna potrivit pentru toată lumea. În teorie, în acest caz, demonul ar trebui oprit undeva între iterațiile sale și nu mai de pe consolă. De exemplu, putem crea o cerere de oprire a scriptului în baza de date sau într-un fișier de pe server, iar între iterații ale demonului putem verifica dacă o astfel de solicitare există. Dacă aplicația este găsită, opriți bucla cu instrucțiunea break.

Sistem de control al demonilor

Ce se întâmplă dacă trebuie să creați și să urmăriți mai mulți demoni simultan? De exemplu, în serviciul CheckTrust menționat mai sus, > 30 de astfel de scripturi sunt implicate în procesarea datelor și proiectelor utilizatorilor. Crearea și monitorizarea acestora din consolă este foarte incomod - este nevoie de o interfață mai ușor de utilizat.

Cool, da? :) Doar pentru a crea un astfel de sistem, ar fi bine să ai acces la linia de comandă din php. Fiecare demon este o intrare în baza de date, împotriva căreia puteți introduce o comandă pentru a-l lansa, precum și PID-ul procesului. În consecință, devine posibilă pornirea, oprirea și monitorizarea stării demonilor direct din interfața web. Drept urmare, demonii înșiși s-au dovedit a fi parte a unei aplicații de consolă, iar sistemul de gestionare a acestora a devenit parte a unei aplicații web.

Deoarece sistemul prezentat mai sus este conceput strict pentru CheckTrust, nu îi voi afișa codul. Dar voi copia codul aici clasa php pentru managementul procesului, pe care l-am folosit când l-am creat:

<?php /* * Process.php * O modalitate ușoară de a ține evidența proceselor externe. * Am vrut vreodată să execute un proces în php, dar tu încă ați vrut să aveți oarecum control asupra procesului? Ei bine... Acesta este un mod de a face asta. * @compatibilitate: numai Linux. (Windows nu funcționează). * @author: Peec */ class Process( private $pid; private $command; public function __construct($cl=false)( if ($cl != false)( $this->command = $cl; $this-> runCom(); ) ) funcția privată runCom())( $comandă = "nohup ".$this->command." > /dev/null 2>&1 & echo $!"; exec($comandă ,$op); $ this->pid = (int)$op; ) public function setPid($pid)( $this->pid = $pid; ) public function getPid())( return $this->pid; ) public function status( ))( $comanda = "ps -p ".$this->pid; if (!isset($op))return false; else return true; this->command != "")$this->runCom() ; else returnează adevărat;

Singurul dezavantaj al acestei clase este că am descris-o deja pe a ta - oprește procesele folosind metoda kill, dar asta este suficient pentru mine deocamdată :) Și aici este un exemplu de utilizare a acestuia:

// Porniți demonul și obținerea PID(presupunând că pid-ul este salvat undeva după pornire) $command = ""; $proces = nou Proces($comandă); $processId = $proces->getPid(); // Verificarea stării demonului $process = new Process(); $proces->setPid($processId); $status = $proces->stare(); // returnează adevărat sau fals // Oprirea demonului $process = new Process(); $proces->setPid($processId); $oprit = $proces->stop(); // returnează adevărat sau fals

Pentru a rezuma, vreau să spun că aceasta nu este singura implementare posibilă și, foarte probabil, nu cea mai optimă a demonilor în PHP. De exemplu, există o extensie PHP cool PCNTL pentru demonii multi-proces. Unii ar putea spune chiar că pentru aplicații de consolă Există limbaje de programare complet diferite. Dar, orice s-ar spune, această implementare are de netăgăduit avantaje:

  • E simplă ca un papuc. Un demon este doar o buclă nesfârșită, mult mai simplă.
  • Este compatibil cu aplicațiile web- fiind parte a unui serviciu web, demonii mei se bazează pe dezvoltările existente, folosesc aceleași modele de date, clase și metode de lucru cu ele.
  • Ea lucrează! Serios – avem niște daemoni care rulează de câteva luni și, fiind bine scrise, nu deveniți proști, nu înghețați și nu consumați memorie.

Vă mulțumesc pentru atenție :) Dacă cineva are întrebări sau idei, voi fi bucuros să le răspund în comentarii.

Există trei în SAPI CLI căi diferite rulați cod PHP:

    Arătând fisier specific pentru început.

    $ php my_script.php $ php -f my_script.php

    Ambele metode (indicând opțiunea -f sau fără) va rula fișierul my_script.php. Puteți alege orice fișier pentru a rula, iar scripturile dvs. PHP nu trebuie să aibă extensia .phpși poate avea orice nume și extensie doriți.

    cometariu:

    Dacă trebuie să transmiteți argumente scripturilor dvs., atunci când utilizați opțiunea -f primul argument ar trebui să fie -- .

  1. Transmite codul PHP direct pe linia de comandă.

    $ php -r "print_r(get_defined_constants());"

    Trebuie să fiți deosebit de atenți când utilizați această metodă, deoarece înlocuirea variabilelor de tip shell poate apărea atunci când sunt folosite ghilimele duble.

    cometariu:

    Vă rugăm să citiți cu atenție exemplul, nu există etichete de deschidere sau de închidere în el! Opțiune -r pur si simplu nu are nevoie de ele. Folosirea acestora va avea ca rezultat o eroare de analiză.

  2. Transmite codul PHP care rulează prin intrarea standard ( stdin).

    Aceasta oferă capacitatea puternică de a genera în mod dinamic cod PHP și de a-l alimenta fișierului de pornire, așa cum se arată în acest exemplu (fals):

    $une_aplicație | unele_filtru | php | sort -u > final_output.txt

Nu puteți combina niciuna dintre aceste trei moduri de a rula codul.

Ca orice altă aplicație de consolă, binarul fișier PHP primește argumente, dar scriptul dvs. PHP poate primi și argumente. PHP nu limitează numărul de argumente transmise scriptului dumneavoastră (shell-ul consolei stabilește un anumit prag pentru numărul de caractere care pot fi trecute; această limită este de obicei suficientă). Argumentele transmise sunt disponibile în tabloul global $argv . Primul index (zero) conține întotdeauna numele scriptului apelat din linia de comandă. Vă rugăm să rețineți că dacă codul este apelat din mers din linia de comandă folosind opțiunea -r, valoarea lui $argv va fi pur și simplu o cratimă ( - ). Același lucru este valabil și pentru codul transmis de la STDIN.

A doua variabilă globală înregistrată este $argc, care conține numărul de elemente din tabloul $argv ((și Nu numărul de argumente transmise scriptului).

Dacă argumentele pe care le transmiteți nu încep cu caracterul - , Acea probleme speciale nu ar trebui să existe. Prin trecerea unui argument scriptului care începe cu - va crea probleme deoarece PHP va decide că ar trebui să se ocupe singur. Pentru a preveni acest comportament, utilizați un delimitator de listă de argumente -- . Odată ce acest delimitator este citit de PHP, toate argumentele ulterioare vor fi trecute neatins scriptului dumneavoastră.

# Această comandă nu va rula acest cod, dar va afișa informații despre utilizarea PHP $ php -r "var_dump($argv);" -h Utilizare: php [-f] [...] # Această comandă va transmite argumentul „-h” scriptului dumneavoastră, împiedicând afișarea ajutorului PHP $ php -r „var_dump($argv);” -- -h array(2) ( => string(1) "-" => string(2) "-h" )

Cu toate acestea, pe sistemele Unix există o altă modalitate de a folosi PHP pentru scripturi de consolă. Puteți scrie un script a cărui primă linie începe cu #!/usr/bin/php(dacă este necesar, înlocuiți calea corectă către dvs fisier binar PHP CLI). După această linie, puteți plasa cod PHP obișnuit, inclus în deschidere și închidere Etichete PHP. Odată ce ați setat atributele corecte de lansare pe fișier (de exemplu, testul chmod +x), scriptul dumneavoastră poate fi rulat ca o consolă obișnuită sau ca script perl:

Exemplul #1 Rularea unui script PHP ca script de consolă

#!/usr/bin/php
var_dump ($argv);
?>

Presupunând că acest fișier se numește test și se află în directorul curent, putem face următoarele:

$ chmod +x test $ ./test -h -- foo array(4) ( => string(6) "./test" => string(2) "-h" => string(2) "--" => șir (3) „foo” )

După cum puteți vedea, în acest caz nu trebuie să vă faceți griji cu privire la trecerea parametrilor care încep cu - .

Executabilul PHP poate fi folosit pentru a rula scripturi PHP independent de serverul web. În cazul în care lucrezi în Sistem asemănător Unix, trebuie să adăugați o primă linie specială la toate scripturile și să le faceți executabile pentru a indica ce program ar trebui să proceseze aceste scripturi. Pe platformele Windows, puteți aloca un handler php.exe pentru fișierele cu extensiile .php sau creați un fișier batch (.bat) pentru a rula scripturi folosind PHP. Linia adăugată la începutul scriptului pentru sistemele Unix nu afectează funcționarea acestora pe sistemul de operare Windows, așa că puteți crea scripturi multiplatformă. Mai jos este un exemplu simplu de script executat din Linie de comanda:

Exemplul #2 Script conceput pentru a fi rulat din linia de comandă (script.php)

#!/usr/bin/php

Dacă ($argc != 2 || în_array ($argv [ 1 ], array("--help" , "-help" , "-h" , "-?" ))) (
?>

Acesta este un script de consolă PHP care ia un singur argument.

Utilizare:

) altfel (
echo $argv [ 1 ];
}
?>

În exemplul de mai sus, folosim o primă linie specială pentru a indica faptul că acest script trebuie rulat folosind PHP. Deoarece lucrăm cu versiunea CLI, anteturile HTTP nu vor fi afișate. Când scrieți aplicații de consolă în PHP, aveți două variabile disponibile: $argc și $argv . Primul este numărul de argumente transmise plus unu (numele scriptului care se execută). Al doilea este o matrice de argumente transmise, începând cu numele scriptului cu index zero ($argv).

De asemenea, în exemplul de mai sus verificăm numărul de argumente transmise. În cazul în care există mai mult sau mai puțin unul dintre ele și, de asemenea, în cazul în care argumentul trecut a fost --Ajutor , -Ajutor , -h sau -? , afișăm un mesaj de ajutor prin înlocuirea numelui scriptului care se execută dinamic. În caz contrar, imprimăm pur și simplu argumentul primit.

Dacă doriți să rulați exemplul de mai sus pe un sistem Unix, va trebui să îl faceți executabil și pur și simplu să îl executați de pe consolă script.php echothis sau script.php -h. Pe un sistem Windows puteți crea pentru aceasta fișier batch:

Exemplul #3 Fișier batch pentru a rula un script PHP din linia de comandă (script.bat)

@echo OFF „C:\php\php.exe” script.php %*

Presupunând că scriptul se numește script.php și calea completă către CLI php.exe este C:\php\php.exe, fișierul batch dat va rula scriptul cu parametrii pe care i-ați transmis: script.bat echothis sau script.bat -h.

Poate doriți să verificați, de asemenea, extensia Readline, care poate fi folosită pentru a îmbunătăți scriptul de consolă PHP.

Bună ziua tuturor. Astăzi încep să scriu într-o nouă secțiune - PHP! Practic, aici vor fi elementele de bază și elementele de bază ale acestui limbaj. Și mai întâi, vă voi spune cum să deschideți un fișier php într-un browser?

De ce nu se deschide php ca html?

Iată chestia: php este limba serverului. Html și javascript sunt pe partea clientului. În consecință, pentru a executa codul PHP trebuie să porniți serverul, doar în acest caz fișierul poate fi deschis. De fapt, există doar 2 moduri:

  1. Creați un site web pe găzduire reală unde veți experimenta cu PHP
  2. Crea server local, unde poți crea gratuit suma nelimitata site-uri pe computer și experimentați cât de mult doriți.

Și vă sfătuiesc cu tărie exact a doua variantă. În consecință, înainte de a începe să deschideți fișiere php, trebuie să instalați un astfel de server. Doar să nu credeți că este greu - o puteți face în doar câteva minute. Dintre cele mai cunoscute servere locale pentru Windows Pot evidenția următoarele:

  1. OpenServer
  2. Denwer
  3. Xamp

Personal, am lucrat doar cu Denver. Aș putea scrie despre instalarea lui separat, dar am decis că nimic nu este mai bun documentație oficială nu poate fi de la dezvoltatori. În acest sens, iată-l. Puteți găsi o mulțime de articole și videoclipuri pe Internet despre instalarea altor servere.

Cum se deschide un fișier php după instalarea serverului?

Este instalat serverul? Grozav, acum aveți totul pentru a rula fișiere php. De fapt, pentru a face acest lucru, serverul dvs. local trebuie să ruleze. Aceasta este comanda rapidă pe care ar trebui să o aveți pe desktop:

Acum trebuie să creați un nou site pentru serverul local. Din nou, vă arăt doar cum să fac asta în Denver. Să mergem la folderul rădăcină server, aici găsim folderul Acasă. Acesta va conține toate site-urile dvs. Trebuie să creați dosar nou, numele acestuia va fi numele noului site. În folderul creat, trebuie să creați un folder www, fără aceasta nimic nu va funcționa. Stadiu final— aruncați fișierele php necesare (care trebuie deschise) în folderul www. Este rădăcina site-ului.

Modul de deschidere a fișierelor php este diferit de modul de deschidere html. Nu le puteți deschide direct în browser, caz în care veți vedea doar codul. Pentru a deschide un fișier, trebuie să înregistrați site-ul pe care se află, precum și calea către fișier de pe site. Vreau să subliniez că dacă introduceți pur și simplu numele site-ului (fără http://, dar cu o bară oblică), serverul va lansa index.php, dacă există.

Exemplu:
Am creat un folder phptest pe serverul local, cu www în el, apoi l-am încărcat în el fisierele necesare. Grozav, acum trebuie să reporniți Denver dacă îl aveați în funcțiune. Dacă nu, rulați-l. Acum, în linia browserului, trebuie să tastați: phptest/

Deci ajungi la pagina principala site-ul. Acest fișier ar trebui să se numească index.php. De exemplu, am creat un calculator în php, l-am pus în phptest numit calc.php. Scriu adresa înainte de acest fișier:

Super, calculatorul s-a deschis. Puteți testa aplicația.

Cum să nu deschid php?

Nu trebuie făcut ca fișierele html. Adică nu prin „Pentru a deschide cu”„Browser”. Deci vei vedea doar sursă dosar, dar în niciun caz rezultatul executării acestuia.

Asta este, ne-am dat seama cum să deschidem un fișier php într-un browser. Este suficient să instalați și să configurați un server local o dată, iar în viitor veți putea deschide fișiere cu această rezoluție fără probleme. Asta e tot ce am pentru azi. Sper că totul a funcționat pentru tine. Te văd.

Începând cu versiunea 4.3, PHP acceptă un nou tip SAPI (Server Application Programming Interface) numit CLI, ceea ce înseamnă Linie de comanda Interfață. După cum sugerează și numele, scopul principal al acestui tip SAPI este de a dezvolta aplicații shell (sau desktop) folosind PHP. Există diferențe foarte mici între CLI SAPI și alte SAPI, care vor fi discutate în continuare în acest capitol.

SAPI CLI a fost lansat pentru prima dată cu PHP 4.2.0, dar pe atunci era un experiment și trebuia activat în mod explicit cu --enable-cli la pornire./configure. Începând cu PHP 4.3.0, SAPI CLI nu mai este experimental și Mereuîncorporat și instalat ca un executabil binar php (numit php.exe pe Windows).

Diferențe semnificative între CLI SAPI și alte SAPI:

    Spre deosebire de CGI SAPI, niciun antet nu este scris în ieșire.

    Deși CGI SAPI are o modalitate de a suprima antetele HTTP, nu există un comutator echivalent pentru a le activa în CLI SAPI.

    Există anumite directive php.ini care sunt suprascrise în CLI SAPI deoarece nu au sens într-un mediu shell:

Tabelul 24-1. Suprascrierea directivelor php.ini
DirectivăCLI SAPI - valoare implicităUn comentariu
erori_html FALS Poate fi destul de dificil să citiți un mesaj de eroare în shell-ul plin cu toate acele etichete HTML fără sens, deci valoarea implicită a acestei directive este FALS .
implicit_flush ADEVĂRAT Este de dorit ca orice concluzie din imprimare() , ecou() iar compania a fost imediat scrisă la ieșire, mai degrabă decât trimisă într-un buffer. Puteți utiliza în continuare tamponarea de ieșire dacă doriți să lucrați cu ieșirea standard.
timp_max_execuție0 (nelimitat) Din cauza posibilităților infinite folosind PHPîntr-un mediu shell, nu există timp maxim de execuție. În timp ce aplicațiile scrise pentru web se execută în câteva fracțiuni de secundă, aplicațiile shell încearcă să dureze cât mai mult posibil.
register_argc_argv ADEVĂRAT Global variabile PHP$argc (număr de argumente, transmise aplicației) și $argv (matricea argumentelor curente) sunt întotdeauna înregistrate și completate cu valorile corespunzătoare atunci când se utilizează SAPI CLI.

Notă: Aceste directive nu pot fi inițializate cu o valoare diferită de fișierul de configurare php.ini sau dosar special(dacă este specificat). Aceasta este oarecum o limitare, deoarece aceste valori implicite sunt aplicate după ce toate fișierele de configurare au fost analizate. Cu toate acestea, valoarea lor poate fi modificată în timpul execuției (ceea ce nu are sens pentru toate celelalte directive, de exemplu, pentru register_argc_argv).

    Este mai ușor să lucrați într-un mediu shell atunci când sunt definite următoarele constante:

    Tabelul 24-2. Constante specifice CLI
    ConstantDescriere
    STDIN Fluxul a fost deja deschis în stdin. Îl protejează pe cel care îl deschide

    Nu trebuie să închideți explicit aceste fluxuri PHP face acest lucru automat.

  • CLI SAPI Nu schimbă directorul curent în directorul scriptului executabil!

    Exemplu care arată diferența dintre CGI SAPI:

    Când să utilizați Versiune CGI, rezultatul va fi:

    Acest lucru oferă o mai mare flexibilitate atunci când scrieți utilități de linie de comandă în PHP.

    Notă: CGI SAPI acceptă comportamentul CLI SAPI folosind comutatorul -C atunci când rulează din linia de comandă.

  • Lista de opțiuni pentru linia de comandă fisier executabil PHP poate fi obținut oricând rulând PHP cu comutatorul -h:

    SAPI CLI are trei căi diferite obținerea PHP-codul de executat:

    1. Spuneți PHP să execute un anumit fișier.

      O atenție deosebită trebuie acordată la înlocuirea variabilelor shell și la utilizarea ghilimelelor.

      Notă: Privește cu atenție exemplul, nu există etichete de început și de sfârșit! Comutatorul -r pur și simplu nu are nevoie de ele. Folosindu-le în în acest caz, va avea ca rezultat o eroare de analiză.

    2. Furnizați codul PHP pentru a fi executat prin intrarea standard (stdin).

      Acest lucru vă permite să creați în mod dinamic cod PHP și să-l transmiteți executabilului, așa cum se arată în acest exemplu (conceput):

      $une_aplicație | unele_filtru | php | sort -u >final_output.txt

    Nu puteți combina aceste trei metode atunci când executați cod.

    Ca și în cazul oricărei aplicații shell, nu numai PHP în sine, ci și dvs Scripturi PHP accepta si argumente. Numărul de argumente transmise scriptului în PHP nu este limitat (shell-ul are o limită a numărului de caractere trecute).
    Argumentele transmise scriptului dumneavoastră sunt disponibile prin intermediul matricei globale $argv. Indicele zero conține întotdeauna numele scriptului (care este un caracter - în cazul în care codul PHP provine de la intrarea standard sau folosind comutatorul -r din linia de comandă).
    A doua variabilă globală înregistrată este $argc, care conține numărul de elemente din tabloul $argv (și Nu numărul de argumente transmise scriptului).

    Dacă argumentele pe care doriți să le transmiteți scriptului nu încep cu un caracter cratimă (-), nu este nimic special de observat. Trecerea unui argument care începe cu - la script va crea probleme deoarece PHP crede că trebuie să le gestioneze singur. Pentru a preveni acest lucru, utilizați -- ca separator de argumente de listă. Odată ce argumentul este analizat de PHP, fiecare argument ulterior este transmis scriptului dumneavoastră neschimbat/neparsat.

    Cu toate acestea, iată o altă modalitate de a utiliza PHP pentru scripting shell. Puteți scrie un script a cărui primă linie începe cu #!/usr/bin/php , urmat de codul PHP normal conținut între etichetele de început și de sfârșit PHP și atributele de execuție ale fișierului setate corespunzător. În acest fel, poate fi executat ca un shell normal sau un script perl:

    După cum puteți vedea, nu trebuie să faceți nimic special când treceți parametri unui script care începe cu - .

    Tabelul 24-3. Opțiuni pentru linia de comandă
    OpțiuneDescriere
    -s

    Afișează sintaxa color.

    Această opțiune folosește mecanismul intern de analiză al fișierului pentru a-l colora. Versiunea HTMLși îi scrie ieșire standard. Vă rugăm să rețineți că numai un bloc [...] de etichete HTML este generat fără antet HTML.

    Notă:

    -w

    Afişa text original fara comentarii sau spatii.

    Notă: Această opțiune nu funcționează împreună cu opțiunea -r.

    -f

    Analizează și execută acest fișier. Acest comutator este opțional și poate fi omis. Este suficient să furnizați un nume de fișier pentru execuție.

    -v

    Scrie versiunile PHP, PHP SAPI și Zend la ieșirea standard, de exemplu:

    -A

    Rulează PHP interactiv.

    -d

    Această opțiune vă permite să setați sens special pentru fiecare directivă de configurare care este permisă în php.ini . Sintaxa este:

    -e

    Generează informații extinse pentru depanator/profiler.

    -z

    Încarcă extensia Zend. Dacă este dat doar numele fișierului, PHP încearcă să se încarce această extensie de la calea implicită curentă către biblioteca de pe sistemul dumneavoastră (specificată de obicei ca /etc/ld.so.conf pe sistemele Linux). Transmiterea numelui de fișier cu o cale absolută nu va folosi calea de căutare de sistem a bibliotecii. Un nume de fișier relativ cu informații despre director va spune PHP să încerce să încarce extensia în raport cu directorul curent.

    -l

    Această opțiune oferă mod convenabil efectuați o verificare de sintaxă a acestui cod PHP. Dacă are succes, textul Fără erori de sintaxă detectate în este scris în ieșirea standard, iar codul de returnare a shell-ului va fi 0 . Dacă nu reușește, textul Errors parsing împreună cu mesajul de eroare intern al parserului este scris la ieșirea standard, iar codul de returnare al shell-ului va fi 255 .

    Această opțiune nu va găsi erori fatale(cum ar fi funcțiile nedefinite). Folosiți -f dacă doriți să verificați și erorile fatale.

    Notă: Această opțiune nu funcționează împreună cu -r .

    -m

    Folosind această opțiune, PHP imprimă modulele PHP și Zend încorporate (și încărcate):

    $ php -m xml tokenizer sesiune standard posix pcre supraîncărcare mysql mbstring ctype
    -iAceastă opțiune de linie de comandă provoacă phpinfo()și imprimă rezultatele. Dacă PHP nu funcționează corect, vă recomandăm să rulați php -i și să vedeți dacă mesajele de eroare sunt tipărite înainte sau în locul tabelelor de informații. Rețineți că rezultatul va fi în HTML și, prin urmare, destul de amestecat.
    -r

    Această opțiune vă permite să rulați PHP direct pe linia de comandă. Etichete de început și de sfârșit PHP () Nu e necesarși provoacă erori de analiză.

    Notă: Trebuie avut grijă când utilizați această formă de PHP pentru a vă asigura că nu există conflicte cu substituțiile variabilelor din linia de comandă efectuate de shell.

    Un exemplu care produce o eroare de parser:

    Ar fi corect de folosit ghilimele simple" . Variabilele șir închise între ghilimele simple nu sunt extinse când rulează sh/bash.

    Executabilul PHP poate fi folosit pentru a rula scripturi PHP complet independente de serverul web.
    Dacă rulați Unix, ar trebui să adăugați o primă linie specială la scripturile dvs. PHP și să le faceți executabile, astfel încât sistemul să știe ce program ar trebui să execute acele scripturi.
    În Windows puteți asocia php.exe cu opțiunea dublu click folosind fișiere .php sau creați un fișier batch (.bat) pentru a rula scriptul prin PHP. O linie adăugată în partea de sus a unui script pentru a rula pe Unix va funcționa bine pe Windows, astfel încât să puteți scrie programe pe mai multe platforme în acest fel. Mai jos este un exemplu de program PHP simplu care trebuie executat din linia de comandă.

    Aici folosim o primă linie specială pentru a indica faptul că acest fișier ar trebui să fie rulat în PHP. Aici lucrăm cu versiunea CLI, astfel încât anteturile HTTP nu sunt afișate. Există două variabile pe care le puteți folosi când scrieți aplicații PHP cu linia de comandă: $argc și $argv. Primul este numărul de argumente plus 1 (nume rularea scriptului). Al doilea este o matrice de argumente, începând cu numele scriptului cu indexul zero ($argv).

    Verificăm dacă există mai puțin sau mai mult de un argument. De asemenea, dacă argumentul a fost --help , -help , -h sau -? , imprimăm un mesaj de ajutor, afișând numele scriptului în mod dinamic. Dacă am primit orice alt argument, îl vom repeta.

    Dacă doriți să rulați scriptul de mai sus pe Unix, trebuie să îl faceți executabil și să îl numiți pur și simplu ca script.php echothis sau script.php -h . Pe Windows puteți crea un fișier batch pentru a efectua această sarcină:

    Presupunând că ați numit programul script.php și că php.exe dvs. se află în c:\php\php.exe , acest fișier batch îl va rula cu opțiunile pe care le-ați adăugat: script.bat echothis sau script.bat -h .

    Consultați, de asemenea, documentația extensiei Readline pentru caracteristicile pe care le puteți utiliza pentru a vă îmbunătăți aplicația PHP de linie de comandă.

Acest articol prevede ghid pas cu pas la instalarea PHP pentru colaborare cu serverul Apache HTTP pe Windows. Această procedură a fost testată atât pe Windows XP, cât și pe Vista. Se presupune că ați finalizat deja instalarea Apache.

PHP 5 pași de configurare

1. Descărcați PHP 5

Înainte de a începe, descărcați o copie a PHP 5 de pe pagini de descărcare. Descărcați pachetul securizat VC6 din secțiunea „Windows Binaries” - adică nu descărcați programul de instalare. De exemplu, selectați pachetul marcat cu „ Pachetul zip PHP 5.2.5", dacă este activat acest moment Versiune curentă — 5.2.5 .

Notă: Vă rugăm să rețineți că nu am testat procedura de mai jos cu versiunile PHP 5.3, doar cu 5.2.5 care a fost ultima versiune la momentul scrierii. Teoretic, aceiași pași ar trebui efectuati pentru Instalări PHP 7 .

2. Instalați PHP 5

Creați un folder pe hard disk pentru PHP. Sugerez c:php , deși ați putea folosi un alt nume de folder și locație. Personal, prefer să nu folosesc nume cu spații.

Extrageți toate fișierele din arhiva descărcată în acest folder. Pentru a face acest lucru, pur și simplu faceți dublu clic pe fișierul zip. Și apoi trageți toate fișierele în folderul c:php.

3. Pentru cei care fac upgrade la pachet: Eliminați vechiul fișier PHP.INI din directorul Windows

Dacă faceți upgrade la PHP 5 de la peste versiune veche, accesați directorul Windows, ( de obicei, acesta este c:windows), și ștergeți toate fișierele php.ini pe care le-ați plasat anterior acolo.

4. Configurare PHP

Accesați folderul c:php și creați o copie a fișierului recomandat de php.ini. Nume fișier nou php.ini . Acum ar trebui să aveți un fișier c:phpphp.in cu conținut identic cu fișierul recomandat de c:phpphp.ini.

Notă: Dacă utilizați Apache 1, trebuie să mutați fișierul php.ini în directorul Windows ( c: windows), sau configurați variabilă de mediu PATH pentru a include c:php . Dacă nu știți cum să faceți acest lucru, mutați fișierul php.ini în folderul c:windows. Nu trebuie să faceți acest lucru dacă utilizați Apache 2, deoarece mai târziu vom specifica o directivă în fișierul de configurare Apache 2 cu locația fișierului php.ini.

Pentru a instala PHP pe Windows 7 folosind editor de text (de exemplu, cum ar fi Notepad, care poate fi găsit în secțiunea System din meniul Start)? deschideți fișierul php.ini. Poate fi necesar să faceți următoarele modificări fișierului:

a) Inclusiv etichete scurte de deschidere

Găsiți următoarea linie:

short_open_tag = Dezactivat

Dacă short_open_tag este dezactivat , etichete precum „

Deoarece multe scripturi PHP de la terți folosesc „

short_open_tag = Activat

b) Citate magice

Când Apache PHP este instalat în mod implicit, datele primite nu sunt automat slash escape. Dacă doriți ca intrarea să fie prefixată cu o bară oblică inversă (""), de exemplu pentru a reproduce setările de găzduire, găsiți următoarea linie:

magic_quotes_gpc = Dezactivat

si inlocuieste-l cu:

magic_quotes_gpc = Activat

Nu este recomandat să faceți acest lucru dacă acest parametru nu este setat pe găzduire. Chiar și atunci când este setat pe Off, puteți utiliza în continuare Funcția PHP adaugă bare oblice() pentru a adăuga bare oblice pentru anumite date.

c) Utilizarea variabilelor globale

O serie de scripturi mai vechi, atunci când sunt executate, presupun că toate datele trimise printr-un formular vor avea automat o variabilă PHP cu același nume. De exemplu, dacă un formular are un câmp de intrare numit „ceva”, scripturile PHP mai vechi presupun că procesorul PHP va crea automat o variabilă numită $something care conține valoarea specificată prin acel câmp.

Dacă utilizați astfel de scripturi, trebuie să găsiți următoarea linie:

register_globals = Dezactivat

si schimba-l in:

register_globals = Activat

Avertisment: Când instalați PHP pe Windows, nu faceți acest lucru decât dacă aveți scripturi terțe care necesită ca acest lucru să funcționeze. Când scrieți scripturi noi, cel mai bine este să presupuneți întotdeauna că elementul register_globals este setat la " Oprit«.

d) Afișarea erorilor

Pe un site live, erorile din script sunt de obicei înregistrate fără să apară în fișierul de eroare PHP. Dar pe o mașină locală, în timp ce testați și depanați un script PHP, este mai convenabil să trimiteți mesaje de eroare atunci când sunt detectate direct în fereastra browserului. În acest fel, nu veți rata erori chiar dacă uitați să verificați fișierul jurnal de erori.

Pentru ca PHP să afișeze mesaje de eroare direct în fereastra browserului, căutați următoarea linie:

display_errors = Dezactivat

si schimba-l in:

display_errors = Activat

Această setare ar trebui să fie întotdeauna setată la Off pe un site care rulează.

e) Calea sesiunii

Dacă scriptul folosește sesiuni, găsiți următoarea linie:

;session.save_path = "/tmp"

session.save_path specifică folderul în care PHP salvează fișierele de sesiune. Deoarece folderul /tmp nu există în Windows, trebuie să instalați un alt folder. O modalitate este de a crea un folder numit c:tmp ( așa cum am creat anterior, c:php) și specificați acest folder pentru acest parametru. Dacă faceți acest lucru, modificați această linie după cum urmează:

session.save_path = "c:tmp"

Rețineți că, pe lângă schimbarea căii, am eliminat și prefixul punct și virgulă (";") din șir.

De asemenea, puteți utiliza folderul TEMP curent de pe computer. Sau creați un folder tmp în directorul dvs. PHP, cum ar fi c:phptmp și setați fișierul de configurare în consecință. Pot exista multe opțiuni posibile. Dacă nu vă puteți decide pe care să alegeți, trebuie doar să creați c:php și să faceți așa cum am spus mai sus.

f) Server SMTP

Dacă ați instalat PHP 55, dacă scriptul dvs. folosește funcția mail() și doriți ca funcția să trimită cu succes e-mail pe mașina dvs. locală, căutați următoarea secțiune:

; Numai pentru Win32. SMTP = localhost smtp_port = 25 ; Numai pentru Win32. ;sendmail_from= [email protected]

Schimbați-l pentru a include adresa serverului SMTP și contul de e-mail. De exemplu, dacă dvs Server SMTP mail.example.com, și adresa de e-mail [email protected], schimba codul astfel:

SMTP = mail.example.com smtp_port = 25 sendmail_from = [email protected]

Vă rugăm să rețineți că după aceasta, atunci când scriptul încearcă să folosească funcția mail(), va trebui să se conecteze la ISP-ul dumneavoastră pentru ca acesta să funcționeze cu succes. Dacă nu modificați liniile de mai sus și încercați să utilizați funcția mail() într-un script, funcția va returna un cod de eroare și va afișa un mesaj de eroare.

Cum se configurează Apache pentru PHP 5

Există două moduri de a instala Apache PHP. În primul rând: setați-l pentru a descărca interpret PHP ca modul Apache. În al doilea rând: configurați-l să ruleze interpretul ca un binar CGI. Trebuie folosit doar unul dintre ele. Selectați metoda modulului dacă PHP este instalat și pe găzduire, cum ar fi modulul Apache, sau utilizați metoda CGI dacă este implementată pe găzduire.

a) Rularea PHP 5 ca modul Apache

Pentru a configura Apache să încarce PHP ca modul pentru analizarea scripturilor PHP, utilizați un editor de text ASCII pentru a deschide fișierul de configurare Apache, httpd.conf.

Dacă utilizați Apache 1.x, fișierul se află în folder c:Program FilesApache GroupApacheconf. Utilizatorii Apache 2.0.x îl pot găsi în folder C:Program FilesApache GroupApache2conf, iar utilizatorii Apache 2.2.x sunt în folder C:Fișiere de programApache Software FoundationApache2.2conf. De obicei, se află în folderul conf al directorului în care este instalat Apache.

Localizați secțiunea fișierului cu instrucțiuni LoadModule. Declarațiile precedate de simbolul hash „#” sunt considerate comentate.

Dacă utilizați Apache 1.x, adăugați următoarea linie după toate instrucțiunile LoadModule:

LoadModule php5_module „c:/php/php5apache.dll”

Dacă utilizați Apache 2.0.x, adăugați următoarea linie după toate instrucțiunile LoadModule:

LoadModule php5_module „c:/php/php5apache2.dll”

Dacă utilizați Apache 2.2.x, adăugați următoarea linie:

LoadModule php5_module „c:/php/php5apache2_2.dll”

Vă rugăm să rețineți că acest exemplu de instalare PHP folosește caracterul bară oblică ("/") în loc de bara oblică tradițională Windows (""). Aceasta nu este o greșeală de tipar.

Dacă utilizați Apache 1.x, găsiți seria de instrucțiuni „AddModule” și adăugați următoarele după toate rândurile.

AddModule mod_php5.c

Apoi găsiți blocul AddType în fișier și adăugați următoarea linie după ultima instrucțiune AddType. Acest lucru trebuie făcut indiferent de versiunea de Apache pe care o utilizați. Pentru Apache 2.2.x trebuie să găsiți liniile AddType în secțiune . Adăugați o linie chiar înainte de închiderepentru aceasta sectiune.

Dacă aveți nevoie de suport pentru alte tipuri de fișiere, cum ar fi „.phtml”, adăugați-le la listă, de exemplu, astfel:

Pentru cei care folosesc una dintre versiunile Apache 2, trebuie să specificați locația fișierului PHP ini. Adăugați următoarea linie la sfârșitul httpd.conf.

PHPIniDir „c:/php”

Dacă ați folosit un director diferit, va trebui să schimbați c:/php în calea corectă. Nu uitați să utilizați o bară oblică ("/").

Dacă utilizați Apache 1, ați plasat deja fișierul php.ini în folderul Windows sau undeva în PATH. Deci PHP va trebui să-l găsească singur.

Rularea PHP 5 ca un binar CGI

Dacă ați configurat PHP 5 să se încarce ca modul Apache, puteți sări peste această secțiune. Este destinat celor care doresc să configureze PHP să ruleze ca un binar CGI.

Procedura pentru a face acest lucru la instalarea PHP 7 este aceeași atât pentru Apache 1.x, cât și pentru toate versiunile din seria 2.x.

Localizați partea din fișierul de configurare Apache care conține secțiunea ScriptAlias. Adăugați linia de mai jos imediat după linia ScriptAlias ​​pentru " cgi-bin" Dacă utilizați Apache 2.2.x, asigurați-vă că linia este înainte de a închidepentru sectiune .

Notă: Dacă ați instalat PHP într-o altă locație, de exemplu c:Program Filesphp , trebuie să specificați calea corespunzătoare. c:/php/ (de exemplu, c:Program Filesphp). Nu uitați că aici folosim slash-ul înainte ("/") în loc de backslash-ul Windows ("").

ScriptAlias ​​​​/php/ "c:/php/"

Apache trebuie să configureze tipul MIME PHP. Găsiți blocul de comentarii AddType care explică utilizarea acestuia și adăugați următoarea linie dedesubt. Pentru Apache 2.2.x, găsiți liniile AddType sub . Adăugați linia de mai jos chiar înainte de închidere pentru aceasta sectiune.

Aplicație AddType/x-httpd-php .php

Ca și în cazul instalării PHP ca modul Apache, puteți adăuga orice extensie pentru ca Apache să le recunoască ca scripturi PHP, de exemplu:

Aplicație AddType/x-httpd-php .phtml

Apoi trebuie să spuneți serverului să execute executabilul PHP de fiecare dată când întâlnește un script PHP. Adăugați următorul cod în fișier, de exemplu, după un bloc de comentarii care explică „ Acțiune«.

Dacă utilizați Apache 2.2.x, adăugați codul imediat după instrucțiunea AddType descrisă mai sus; Apache 2.2.x nu are un bloc de comentarii " Acțiune«.

Aplicație de acțiune/x-httpd-php „/php/php-cgi.exe”

Notă: Partea „/php/” va fi recunoscută ca ScriptAlias, un fel de macrocomandă care va fi extinsă de Apache la „c:/php/” ( sau „c:/Program Files/php/” dacă ați instalat PHP acolo). Cu alte cuvinte, nu pune calea „c:/php/php.exe” sau „c:/Fișiere de program/php/php.exe”, dar utilizați „/php/php-cgi.exe” .

Dacă utilizați Apache 2.2.x, găsiți următoarea secțiune în fișierul dvs. httpd.conf:

Adăugați rândurile de mai jos imediat după secțiunea pe care tocmai ați găsit-o.

AllowOverride Niciunul Opțiuni Nici unul Comanda permite, refuza Permite tuturor

c) Setarea paginii de index implicite

Această secțiune se aplică opțiunii de instalare PHP pe Windows atât ca modul Apache, cât și ca binar CGI.

Dacă creați un fișier index.php și doriți ca Apache să îl încarce ca pagina de pornire a site-ului, va trebui să adăugați o altă linie la fișierul httpd.conf. Găsiți linia care începe cu " DirectoryIndex", si adauga " index.php" la lista de fișiere. De exemplu, dacă ați avut cod ca acesta:

DirectoryIndex index.html

schimba-l in:

DirectoryIndex index.php index.html

Data viitoare când vă conectați la serverul web printr-un nume de director precum „ gazdă locală" sau " localhost/director/", Apache va trimite toate scripturile din index.php sau conținutul fișierului index.html dacă index.php nu este disponibil.

Reporniți serverul web Apache

Reporniți serverul Apache. Acest lucru este necesar pentru ca Apache să citească noile directive de configurare PHP pe care le-ați plasat în fișierul httpd.conf. Serverul Apache 2.2 poate fi repornit făcând dublu clic pe pictograma Apache Service Monitor din bara de activități și făcând clic pe butonul „Repornire” din fereastra care apare.

Testarea instalării PHP

După instalarea PHP 5 5 sau o altă versiune a limbii, creați un fișier php cu următoarea linie:

Salvați un fișier numit test.php în directorul Apache htdocs. Dacă utilizați Notepad, asigurați-vă că salvați numele " test.php„ cu ghilimele. În caz contrar, programul va adăuga automat extensia .txt.

Deschideți acest fișier în browser introducând „localhost/test.php” (fără ghilimele) în bara de adrese. Nu deschideți fișierul direct prin Explorer - veți vedea doar codul pe care l-ați introdus mai devreme. Trebuie să utilizați adresa URL de mai sus pentru ca browserul să încerce să acceseze serverul web Apache, care rulează PHP pentru a interpreta scriptul.

Dacă totul merge bine, veți vedea o pagină cu informații despre configurarea PHP. Felicitări - ați instalat cu succes PHP și ați configurat Apache să lucreze cu el. Puteți încărca același fișier test.php pe găzduirea dvs. și îl puteți rula acolo pentru a afla cum a configurat PHP găzduirea și încercați să reproduceți aceste setări pe mașina dvs.

Dacă acest lucru nu funcționează, verificați dacă instalarea PHP sau instalarea Apache generează erori. Pentru a face acest lucru, deschideți o fereastră de prompt de comandă și rulați php-cgi.exe pe fișierul test.php, de exemplu c:phpphp-cgi test.php .

Dacă ați apelat PHP din linia de comandă și ați văzut un fișier HTML mare cu toate informațiile de configurare PHP, atunci PHP este configurat corect. Problema este probabil legată de configurația Apache. Asigurați-vă că reporniți Apache după ce ați făcut modificări de configurare și că ați configurat corect serverul web.