Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

PHP

PHP je šifrovan, generičke uloge, jezik široke primene koji je naročito pogodan za veb razvoj i može se uključiti i u HTML. Na taj način manji delovi dinamičkog sadržaja se mogu uključiti u veb stranice, iako je tehnologija iza svih svetskih najpopularnijih Free Software veb aplikacija (uključujući WordPress, MediaWiki, Drupal, Joomla, …). Ova stranica daje detaljno objašnjenje kako podestiti vebprostor za korišćenje PHP. Za više detalja o programiranju pomoću PHP, molim vas pogledajte PHP homepage .

PHP se veoma koristi kod Apache modula, poznstog kao mod_php, ali iz sigurnosnih razloga mi vam ne možemo te usluge ponuditi (more details). Umesto toga, napravili smo PHP dostupnim preko CGI korišćenjem standalone interpreter. IU većini slučajeva, nećete morati praviti nikakve promene u vašem kodu. Ako CGI nije dovoljan za vaš sajt (suprotno većini sajtova), možete da dogovorite pokretanje vaše PHP skripte kao upornog FastCGI procesa .

Korišćenje PHP
________________________________________________________________

 

Da bi koristili PHP, vaša skripta morala bi imati .phpextension. Kada su u pitanju novo-napravljeni nalozi, oni će morati raditi kao PHP5. (Za naloge koji su nastanjeni na sphinx, druge verzije su takođe dostupne.)

Za naloge na onza ili yali kreirane nakon 2012-05-05, nisu neophodni sledeći koraci. Nalozi na sphinx and i kod drugih naloga execute bits to be set samo kod PHP fajlova.

Konfiguracija posebnih verzija PHP
________________________________________________________________

 

Instrukcije u ovom delu se samo odnose na naloge na sphinx.mythic-beasts.com.

Tokom godina PHP se veoma razvio, i skripte koje su napisane da bi koristile PHP 3 ne moraju raditi pod PHP 5 ili obrnuto. Ako morate da koristite drugu neku verziju PHP, ima nekoliko načina da to uradite. Skripte sa produžetkom .php3, .php4 ili .php5 are rade pod odgovarajućom verzijom. Ako se skripti doda određena verzija produžetaka to je jedan od načina da odredite PHP verziju koja će se koristiti.

Za novo-nastale naloge, skripte sa nastavkom .php biće pokrenute kao PHP 5; a neki stariji nalozi kao PHP 4. (Da biste videli koju vrstu skripte koristi vaš PHP ukucajte php-binfmt -v.) Možete da promenite vašu datu verziju skripte za PHP tako što ćete uraditi sledeće

    mkdir -p ~/.alternatives
    ln -sf /software/bin/php5 ~/.alternatives/php
    ln -sf /software/bin/php5 ~/.alternatives/php-binfmt

Promenite php5 u php3 ili php4 u ovo gore ako želite stariju verziju PHP. Imajte na umu da će to uticati na sajt na kome se vaš nalog nalazi.

Ako želite da promenite verziju PHP korišćenjem fajlova sa .phpextension za sve delove vašeg veb sajta, a da pritom ne utičete na druge sajtove na kojima se vaš nalog nalazi, onda možete napraviti poseban .alternatives directory za taj jedan nalog:

    mkdir -p ~/.alternatives
    cp -r ~/.alternatives ~/.alternatives-for-my-site
    ln -sf /software/bin/php5 ~/.alternatives-for-my-site/php
    ln -sf /software/bin/php5 ~/.alternatives-for-my-site/php-binfmt

Zatim kreirjte fajl koji je nazvan .htaccess u direktorijumu koji taj sajt sadrži, ili deo sajta koji želite da pokrenete sa različitom verzijom PHP. Ovo bi trebalo da sadrži sledeći niz:

    SetEnv HTTP_ALTERNATIVES_DIR /home/username/.alternatives-for-my-site

Korišćenje php.ini fajla
________________________________________________________________

NekAda je potrebno prepisati neke od konfiguracionih parametara za PHP'. Ovo se može uraditi tako što ćete napraviti php.ini file da bi ste prepisali vrednosti postavljenog sistema. Uobičajeno, php.ini fajl mora biti u istom direktorijumu kao i PHP skripta sa kojom je sve počelo.

Ako imate veliki sajt sa mnogo direktorijuma, održavanje kopija php.ini u svakom direktorijumu može biti neophodno. Jedna od strategija je da imate jedinstvenu kopiju fajla sa PHP i sa -coption sa referencom na ovu kopiju. Da biste ovo uradili, napravite skriptu oko PHP koja se zove php-wrapper:

    #!/bin/sh
    exec /software/bin/php5 -c /path/to/php.ini "$@" 

and set up .alternatives to recognise this:

    mkdir -p ~/.alternatives
    ln -sf /path/to/php-wrapper ~/.alternatives/php
    ln -sf /path/to/php-wrapper ~/.alternatives/php-binfmt

Neki korisnici su upoznati sa php_value directive koriščenom kod .htaccess fiajla kao alternativni način ponovnog ispisivanja PHP konfiguracionih podešavanja. To je karakteristično za mod_php i zato ne radi na našem serveru.

Zašto se ne može koristiti mod_php?
________________________________________________________________

Nije moguće napraviti mod_php dostupan za vaš nalog iz bezbedonosnih razloga, jer se vaš nalog nalazi na deljenom serveru. Mnogi korisnici na mreži su usluženi istim server procesom. Vebserver je napravljan da se pokrene pod CGI skriptom kada postoji korisnički ID korisnika vebstranice, pre nego korisnički ID procesa veb servera. To znači da vaša CGI skripta mora biti čitljiva za korisnički ID, tako da je moguće uključiti i ostljive podatke (kao što je lozikna za bazu podataka) u vašu skriptu, tako da drugi korisnici ne bi mogli tome pristupiti.

Nije moguće konfigurisati veb server da radi pod mod_php skriptom sa drugačijim korisničkim ID, i ne bi bilo moguće da s uključe osetljivi podaci. Tako što se korisnička skripta izvršava pod istom lozinkom kao i proces veb servera, ima svoje sigurnosne prednosti i neke implikacije na druge sisteme.

Korišćenje FastCGI sa PHP
________________________________________________________________

Ako očekujete da promet na vašem sajtu bude gust, možete poboljšati performanse vašeg sajta pokretanjem PHP interpretera kao "FastCGI" procesa. Ovo će vam omogućiti da postignete željenu izvodbu čak i kod veoma brzih sajtova (kod testiranja, saznali smo da je procenat od 50 do 100 zahteva/sekundi, i da se to lako može održati). Ali ova konfiguracija je malo komplikovanija, tako da mi preporučujemo da ih ne koristite, jedino u slučajevima da je vaš sajt dovoljno prometan da vam je neophodna dodatna pomoć.

FastCGI je protokol koji dovoljava veb serveru kao što je apache da uključi druge programe stranica, ali ne po cenu CGI (koji mora da nabode proces za svaki zahtev) ili iz bezbednosnih razloga pokretanja skripte za vreme procesa veb servera (raspravljali smo o tome gore). PHP verzija 4 i kasnija podrška FastCGI nastaju na dva načina:

  1. pokrenite držač oza svaku PHP stranicu odvojenog procesa;
  2. pokrenite jedan ili više PHP interpretera, od kojih svaki služi PHP stranici.

Drugo u nizu je uvek bolje, iz očiglednih razloga, a mi ovde objašnjavamo i konfiguraciju. (Imajte na umu da ove instrukcije pretpostavljaju da je bvaš vebsajt konfigurisan skoro na isti način kao i ostali. Moraćete da ga podestite za svaki mogući sofisticiraniji pristup.)

Da bi ste ovo podesili, počnite sa pravljenjem direktorijuma koji je nazvan fcgi u korenu vašeg veb sajta. Unutar toga kreirajte skriptu nazvanu php, koja sadrži sledeće:

    #!/bin/sh
    PHPRC=/etc/php5/fcgi exec /software/bin/php5 "$@"

i to i izvršava. (Radije ćemo koristiti skriptu nego symlink jer apache je veoma izbirljiv po pitanju dozvola i simboličkih linkova. Primena PHPRC okruženja varira zavusno od zahteva koje ima PHP kod malo drugačije konfigurisanog fajla, pošto vrednost ove cgi.fix_pathinfo mora biti 1 za FastCGI i 0 za normaln CGI.) Takođe napravite .htaccess fajl za isti direktorijum:

    Options +ExecCGI
    SetHandler fastcgi-script

koji govori apache da pokrene skriptu /fcgi/ kod direktorijuma upornog kao što je FastCGI proces. Sledeći korak je da imate individualan PHP fajl koji je procesuiran korišćenjem interpretera. Da bi ste ovo uradili, dodajte sledeći .htaccess fajlu u korenskom direktorijumu vašeg sajta (kreirajte jednu, ako nijedna ne postoji):

    AddType application/x-httpd-fastphp .php
    Action application/x-httpd-fastphp /fcgi/php

Kada sve to uradite, onda sve naprosto i MORA RADITI.

Prvo ide testiranje
________________________________________________________________

Pošto želite da se uverite da se notiranje na vašem sajtu ruši kada napravite promenu, evo jednostavnog načina testiranja, a da pritom ne remetite regularne operacije na vašem sajtu.

Prvo, napravite kopiju svih (ili nekih) od vaših .php stranica pod novim imenom koje se završava na .qhq, fna primer, sa ovom komandom:

    for phpfile in `find . -name '*.php'`
    do
    qhqfile=$( echo $phpfile | sed 's/\.php/.qhq/' )
    cp $phpfile $qhqfile
    done

Za sada imamo apache interpretra ovih fajlova korišćenjem FastCGI PHP interpretera. ADodajte sledeće .htaccess fajlu u osnovnom direktorijumu na vašem veb sajtu:

    AddType application/x-httpd-fastphp .qhq
    Action application/x-httpd-fastphp /fcgi/php

Sada pronađite neke od .qhq fajlova koje ste upravo napravili. Ako sve kako treba radi, onda moraju raditi isto kao njihovi .php srodni delovi. Ako ne, moraćete da pronađete problem, čitajući poruke koje se na vašem serveru. Mnogo istih problema su rezultat vlasništva ili dozvola samog.../fcgi/php i individualnih .qhq fajlova.

Kada sve radi, možete promeniti AddType liniju u korenu .htaccess fajla da bi se odnosio na .php fajlove, i sve bi trebalo biti spremno za rad. Kada ste to uradili izbrišite .qhq fajlove:

    find . -name '*.qhq' | xargs rm

i sve ste podesili.

Izvršavanje Bits
________________________________________________________________

Ovaj deo će govoriti o nalozima sphinx (ili starijim nalozima na onza ili yali, ali ne još dugo!)

Skripta mora biti moguća za izvršenje. Ako imate nalog, možete izvršiti samo jednu skriptu korišćenjem chmod ("change mode") komanda:chmod a+x myscript.php. Za više promena, možete koristiti ovu komandu da bi ste napravili .php scripts kod trenutnog direktorijuma spremnu za izvršenje:

    find . -name \*.php -print0 | xargs -0r chmod a+x,og-w

(Ovo takođe pomera grupe i druge korisnike zbog čeka se takođe stvara manja frka oko CGI.)

Ako imate Hosting account, moraćete da koristite FTP klijenta da bi ste podesili izvršenje. Detalji će za svakog klijenta varirati za klijenta na komandnoj liniji pogledajte CHMOD komandu; drugi korisnici će verovatno govoriti o "file permissions".

Dozvole i valsništvo vaše PHP skripte jeste predmet iste restrikcije kao i druge CGI skripte .

Za naloge na sphinx, morate namestiti da se sa vašom skriptom postupa kao sa CGI skriptom veb servera. Najjednostavniji način da se ovo uradi jeste da se stave u vaš cgi-bin direktorijum. Takođe je moguće napraviti PHP skriptu kod drugih izvršenih direktorijuma. Ovo se može postići kreiranjem fajla pod nazivom.htaccess u direktorijumu koji sadrži tekst:

      AddHandler cgi-script .php
      Options +ExecCGI

Ako ovo ne proradi, nećete dobiti zahtevanu dozvolu za vaš virtuelni veb sajt. Molimo vas da nam pišete na e-mail i bićemo srećni da napravimo izmene u konfiguraciji:

Mnogi paketi aplikacija, naročito WordPress, instaliraju svoj files without izvršni set, tako da ćete morati da ispravite sve kao što je objašnjeno pre nego što ga pokrenete.

Nažalost, WordPress ne zadržava stalnu dozvolu tokom ažuriranja - ažuriranje će prestati i prekinuti vaš WordPress tokom instalacije, pa ćete morati da odobrenje popravite ručno. Ipak, ako dodate sledeći niz wp-config.php onda će WordPress koristiti ispravnu propusnicu.

    define( 'FS_CHMOD_FILE', 0755 );




Published (Last edited): 12-02-2013 , source: http://mythic-beasts.com/support/topic_php.html