instaliranje PHP-a

Instaliranje PHP-a: Sveobuhvatan vodič

PHP (rekurzivni akronim za PHP: Hypertext Preprocessor) je široko korišteni skriptni jezik otvorenog koda, prvenstveno dizajniran za razvoj web aplikacija koje se izvršavaju na strani poslužitelja. Njegova popularnost proizlazi iz lakoće učenja, fleksibilnosti, velike zajednice i bogatog ekosustava koji uključuje razne okvire (frameworks) i sustave za upravljanje sadržajem (CMS) poput WordPressa, Joomle i Drupala. Razumijevanje procesa instalacije i konfiguracije PHP-a ključno je za svakog web developera ili administratora sustava.

Priprema za instalaciju

Prije nego što započnete s instalacijom PHP-a, važno je provjeriti nekoliko preduvjeta i donijeti informirane odluke.

Zahtjevi sustava

PHP se izvršava na širokom spektru operativnih sustava, uključujući Linux, Windows, macOS i druge Unix-olike sustave. Minimalni zahtjevi obično uključuju:

  • Operativni sustav: Aktualna verzija Linux distribucije (Ubuntu, CentOS, Debian itd.) ili Windows Server (2012 R2 i noviji) / Windows 10/11.
  • Web server: Apache HTTP Server, Nginx ili Microsoft IIS. PHP radi kao modul ili vanjski proces koji komunicira s web serverom.
  • Baza podataka: Iako PHP može raditi bez baze podataka, većina web aplikacija zahtijeva neku vrstu baze, poput MySQL/MariaDB, PostgreSQL, SQLite, MSSQL.
  • Dovoljno resursa: Ovisno o opterećenju, poslužitelj treba imati dovoljno RAM-a i procesorske snage.

Odabir verzije PHP-a

Odabir prave verzije PHP-a ključan je za performanse, sigurnost i kompatibilnost.

  • Stabilnost i podrška: Uvijek se preporučuje korištenje najnovije stabilne verzije PHP-a koja je još uvijek aktivno podržana (Long Term Support – LTS). Starije verzije mogu imati sigurnosne propuste i nedostatak novih značajki. Trenutno su to PHP 7.4 (za starije projekte), PHP 8.1, PHP 8.2 i PHP 8.3.
  • Kompatibilnost aplikacije: Provjerite zahtjeve vaše web aplikacije ili CMS-a (npr. WordPress navodi minimalnu preporučenu verziju PHP-a). Instalacija previše nove verzije može uzrokovati probleme s kompatibilnošću.
  • Razvojno okruženje vs. produkcija: Za razvojno okruženje možete eksperimentirati s najnovijim verzijama, dok za produkciju uvijek birajte verzije s aktivnom sigurnosnom podrškom.

Instalacija PHP-a na različitim operativnim sustavima

Proces instalacije značajno se razlikuje ovisno o operativnom sustavu.

Instalacija na Linuxu

Na Linux sustavima, PHP se najčešće instalira putem upravitelja paketa, što je najjednostavniji i preporučeni način.

1. Ažuriranje sustava: Uvijek započnite ažuriranjem vašeg sustava paketa:

# Za Debian/Ubuntu
sudo apt update && sudo apt upgrade -y

# Za CentOS/RHEL
sudo yum update -y

2. Instalacija PHP-a i modula: PHP se rijetko instalira samostalno; obično zahtijeva ekstenzije za baze podataka, obradu slika i druge funkcije. Također, način na koji PHP komunicira s web serverom je ključan. Preporučuje se korištenje PHP-FPM (FastCGI Process Manager) za Apache i Nginx.

  • Za Debian/Ubuntu: Instalacija PHP 8.2 s FPM-om i najčešćim ekstenzijama:

    sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip -y
    

    Nakon instalacije, PHP-FPM servis će se automatski pokrenuti. Možete ga provjeriti:

    sudo systemctl status php8.2-fpm
    
  • Za CentOS/RHEL (putem Remi repozitorija): CentOS/RHEL obično imaju starije verzije PHP-a u svojim osnovnim repozitorijima. Za novije verzije, koristite Remi repozitorij.

    # Instalirajte EPEL i Remi repozitorij
    sudo yum install epel-release -y
    sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y # Za CentOS 8 / RHEL 8
    # Ili za CentOS 7 / RHEL 7: sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
    
    # Omogućite željenu PHP verziju (npr. PHP 8.2)
    sudo yum module enable php:remi-8.2 -y
    
    # Instalirajte PHP 8.2 s FPM-om i ekstenzijama
    sudo yum install php php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip -y
    

    Pokrenite i omogućite PHP-FPM servis:

    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
    

3. Konfiguracija web servera: Nakon instalacije PHP-FPM-a, potrebno je konfigurirati web server (Apache ili Nginx) da koristi FPM za obradu PHP datoteka. Ovaj korak je opisan kasnije u “Integracija PHP-a s web serverom”.

Instalacija na Windowsima

Instalacija PHP-a na Windowsima nudi nekoliko pristupa.

1. Korištenje Web Platform Installera (WPI): Ovo je često najjednostavniji način za instalaciju PHP-a i IIS-a. WPI automatski preuzima i konfigurira potrebne komponente.

  • Preuzmite i instalirajte Microsoft Web Platform Installer.
  • U WPI pretražite “PHP” i odaberite željenu verziju. Također možete instalirati IIS FastCGI modul ako već nije instaliran.
  • WPI će automatski preuzeti, instalirati i konfigurirati PHP za rad s IIS-om.

2. Ručna instalacija: Ovaj pristup daje veću kontrolu, ali zahtijeva više ručnih koraka.

  • Preuzimanje PHP binarnih datoteka: Posjetite službenu PHP stranicu za preuzimanje za Windows. Preuzmite zip arhivu za Non Thread Safe (NTS) verziju ako koristite IIS (FastCGI) ili Thread Safe (TS) ako koristite Apache s mod_php. Preporučuje se NTS verzija za većinu modernih setupa.
  • Ekstrakcija: Ekstrahirajte sadržaj zip arhive u direktorij po vašem izboru, npr. C:\php.
  • Konfiguracija php.ini: U direktoriju C:\php, preimenujte php.ini-development u php.ini (za razvojno okruženje) ili php.ini-production u php.ini (za produkciju). Otvorite php.ini i napravite sljedeće promjene:
    • Postavite extension_dir = "ext" (pretpostavljajući da je ‘ext’ poddirektorij vašeg PHP instalacijskog direktorija).
    • Omogućite potrebne ekstenzije tako što ćete ukloniti ; ispred linija kao što su ;extension=mysqli, ;extension=gd, ;extension=curl.
    • Postavite date.timezone = "Europe/Zagreb" (ili vašu odgovarajuću vremensku zonu).
  • Dodavanje PHP-a u PATH (opcionalno, ali preporučeno): Dodajte C:\php u varijable okoline (PATH) kako biste mogli pokretati PHP naredbe iz bilo kojeg direktorija u komandnoj liniji.
    • Desni klik na “This PC” (ili “My Computer”) -> Properties -> Advanced system settings -> Environment Variables.
    • U “System variables”, pronađite “Path”, kliknite “Edit” i dodajte C:\php.
  • Konfiguracija web servera (IIS):
    • Otvorite IIS Manager.
    • Na razini servera, idite na “Handler Mappings” i dodajte “Add Module Mapping…”.
      • Request path: *.php
      • Module: FastCgiModule
      • Executable: C:\php\php-cgi.exe
      • Name: PHP via FastCGI
    • Pritisnite OK. IIS će vas pitati želite li stvoriti FastCGI aplikaciju – potvrdite.
    • Provjerite “FastCGI Settings” na razini servera i po potrebi podesite parametre kao što su InstanceMaxRequests, Activity Timeout, Idle Timeout.

Korištenje all-in-one paketa (XAMPP, WAMP, MAMP)

Za lokalni razvoj, najjednostavniji način instalacije PHP-a, Apache/Nginx, MySQL/MariaDB i drugih alata je korištenje all-in-one paketa:

  • XAMPP: (X-platform, Apache, MySQL, PHP, Perl) Dostupan za Windows, macOS i Linux.
  • WAMP: (Windows, Apache, MySQL, PHP) Samo za Windows.
  • MAMP: (macOS, Apache, MySQL, PHP) Dostupan za macOS i Windows. Ovi paketi automatski instaliraju i konfiguriraju sve komponente, omogućujući vam da vrlo brzo pokrenete razvojno okruženje. Iako su izvrsni za lokalni razvoj, rijetko se koriste na produkcijskim serverima zbog manjeg stupnja kontrole i optimizacije.

Provjera instalacije PHP-a

Nakon instalacije, ključno je potvrditi da PHP radi ispravno.

Provjera ispravnosti PHP instalacije (phpinfo())

Najčešći način provjere je stvaranje phpinfo() datoteke.

  1. Stvorite datoteku: U korijenskom direktoriju vašeg web servera (npr. /var/www/html za Apache na Linuxu, C:\inetpub\wwwroot za IIS na Windowsu), stvorite novu datoteku pod nazivom info.php (ili bilo koje drugo ime s ekstenzijom .php).
  2. Unesite sadržaj: U datoteku info.php dodajte sljedeći kod:
    <?php
    phpinfo();
    ?>
    
  3. Pristupite putem preglednika: Otvorite web preglednik i pristupite datoteci putem URL-a, npr. http://localhost/info.php ili http://vasa-domena.com/info.php. Ako je PHP ispravno instaliran i konfiguriran s vašim web serverom, vidjet ćete detaljnu stranicu s informacijama o vašoj PHP instalaciji, uključujući verziju, konfiguracijske opcije, učitane module i okruženje. VAŽNO: Nakon provjere, obrišite datoteku info.php s produkcijskog servera, jer otkriva osjetljive informacije o vašem sustavu.

Provjera PHP verzije putem naredbenog retka (php -v)

Za brzu provjeru PHP verzije i osnovne funkcionalnosti izvan web servera, koristite naredbeni redak:

php -v

Ova naredba bi trebala ispisati verziju PHP-a koja je instalirana i dostupna u vašoj PATH varijabli okoline. Ako dobijete poruku “command not found” ili slično, PHP putanja nije ispravno konfigurirana ili PHP nije instaliran na način da bude dostupan globalno.

Prilagodba osnovnih postavki PHP-a (php.ini)

php.ini je glavna konfiguracijska datoteka za PHP. U njoj se definiraju postavke koje utječu na rad PHP-a, od performansi do sigurnosti.

Lokacija php.ini:

  • Linux: Obično se nalazi u /etc/php/<verzija>/fpm/php.ini (za PHP-FPM) ili /etc/php/<verzija>/apache2/php.ini (za mod_php). Za CLI verziju, često je u /etc/php/<verzija>/cli/php.ini.
  • Windows: U direktoriju gdje ste instalirali PHP (npr. C:\php).

Ključne postavke za prilagodbu: Otvorite php.ini datoteku u tekstualnom editoru i potražite sljedeće direktive:

  • display_errors:
    • Razvoj: display_errors = On (prikazuje greške izravno na web stranici)
    • Produkcija: display_errors = Off (iznimno važno za sigurnost, sprečava otkrivanje putanja i internih grešaka korisnicima). Greške bi se trebale zapisivati u log datoteke (vidi error_log).
  • error_reporting:
    • Razvoj: error_reporting = E_ALL (prikazuje sve greške, upozorenja i obavijesti)
    • Produkcija: error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT (prikazuje sve osim zastarjelih funkcija i strožih upozorenja) ili error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED & ~E_STRICT (još opreznije)
  • memory_limit:
    • Definira maksimalnu količinu memorije u megabajtima koju skripta može alocirati. memory_limit = 128M je često početna vrijednost, ali za složenije aplikacije može biti potrebno 256M, 512M ili više.
  • max_execution_time:
    • Maksimalno vrijeme u sekundama koje skripta može izvršavati prije nego što bude prekinuta. Zadana vrijednost je 30 sekundi. Za duže procese (npr. uvoz podataka), možda će trebati 60, 120 ili više.
  • post_max_size i upload_max_filesize:
    • post_max_size: Maksimalna veličina POST podataka koje PHP može prihvatiti (npr. podaci iz obrasca).
    • upload_max_filesize: Maksimalna veličina datoteke koju se može učitati putem HTTP uploada.
    • Obje vrijednosti treba postaviti na razumnu veličinu, npr. post_max_size = 32M i upload_max_filesize = 20M. post_max_size treba biti jednak ili veći od upload_max_filesize.
  • date.timezone:
    • Određuje zadanu vremensku zonu za sve funkcije datuma/vremena. Važno je postaviti kako biste izbjegli upozorenja i osigurali točnost. Npr. date.timezone = "Europe/Zagreb". Popis podržanih vremenskih zona možete pronaći u PHP dokumentaciji.
  • Omogućavanje ekstenzija:
    • Mnoge PHP ekstenzije su komentirane (počinju sa ;) po defaultu. Da biste ih omogućili, uklonite ; ispred odgovarajuće linije, npr. extension=gd, extension=mysqli. Provjerite je li extension_dir ispravno postavljen.

Nakon svake promjene u php.ini, morate restartati PHP-FPM servis (ako ga koristite) i/ili web server (Apache, Nginx, IIS) da bi promjene stupile na snagu.

  • Linux:
    # Za PHP-FPM (npr. PHP 8.2)
    sudo systemctl restart php8.2-fpm
    
    # Za Apache
    sudo systemctl restart apache2 # Debian/Ubuntu
    sudo systemctl restart httpd # CentOS/RHEL
    
  • Windows: Restartajte IIS u IIS Manageru ili Apache servis ako ste ga instalirali.

Integracija PHP-a s web serverom

Da bi web server mogao obraditi PHP datoteke, mora postojati mehanizam za komunikaciju između njih.

Apache

Apache HTTP Server može integrirati PHP na dva glavna načina:

  1. mod_php (DSO modul):

    • PHP se učitava direktno u Apache procese kao modul. Jednostavan za postavljanje, ali može biti manje učinkovit u visokotemperaturnim okruženjima, jer svaki Apache proces koji služi PHP skriptu drži PHP interpreter u memoriji.
    • Instalacija: sudo apt install libapache2-mod-php8.2 (Debian/Ubuntu).
    • Konfiguracija: Apache modul automatski obrađuje .php datoteke.
    • Ne preporučuje se za produkciju novih aplikacija; PHP-FPM je moderniji i fleksibilniji pristup.
  2. PHP-FPM (FastCGI Process Manager):

    • PHP-FPM je zaseban servis koji sluša na određenom socketu (obično Unix socket ili TCP port). Apache (ili Nginx) prosljeđuje zahtjeve za PHP datotekama na PHP-FPM. Ovo omogućuje bolju izolaciju procesa, stabilnost i performanse.
    • Preporučeni način integracije s Apacheom (i Nginxom).
    • Konfiguracija Apache VHost za PHP-FPM (primjer za Ubuntu/Debian):
      • Omogućite mod_proxy i mod_proxy_fcgi module:
        sudo a2enmod proxy proxy_fcgi
        sudo systemctl restart apache2
        
      • U vašoj virtualnoj host konfiguraciji (npr. /etc/apache2/sites-available/vasa_domena.conf), dodajte sljedeće unutar <VirtualHost> bloka:
        <FilesMatch "\.php$">
            # Za Unix socket (preporučeno)
            SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
            # Ili za TCP port
            # SetHandler "proxy:fcgi://127.0.0.1:9000"
        </FilesMatch>
        
        # Opcionalno, za DirectoryIndex
        DirectoryIndex index.php index.html
        
      • Omogućite site i restartajte Apache:
        sudo a2ensite vasa_domena.conf
        sudo systemctl restart apache2
        

Nginx

Nginx izvorno ne podržava izravno izvršavanje PHP-a. Uvijek koristi FastCGI (pa tako i PHP-FPM) za prosljeđivanje PHP zahtjeva.

  • Konfiguracija Nginx server bloka za PHP-FPM (primjer): U vašoj Nginx konfiguracijskoj datoteci za web stranicu (npr. /etc/nginx/sites-available/vasa_domena.conf), dodajte ili modificirajte location blok za PHP:
    server {
        listen 80;
        server_name vasa-domena.com www.vasa-domena.com;
        root /var/www/html; # Korijenski direktorij vaše web stranice
    
        index index.php index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf; # Uključuje osnovne FastCGI postavke
            fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Koristi Unix socket
            # Ili za TCP port:
            # fastcgi_pass 127.0.0.1:9000;
        }
    
        # Opcionalno: Sprečavanje pristupa skrivenim datotekama
        location ~ /\.ht {
            deny all;
        }
    }
    
  • Nakon promjena, provjerite Nginx konfiguraciju i restartajte servis:
    sudo nginx -t
    sudo systemctl restart nginx
    

IIS (Microsoft Internet Information Services)

Na Windowsima, IIS koristi FastCGI modul za komunikaciju s PHP-om. Ovo je već opisano u “Ručna instalacija” pod Windowsima. Osigurajte da je FastCgiModule dodan u “Handler Mappings” i da putanja do php-cgi.exe (za NTS verzije) je ispravna.

Rješavanje uobičajenih problema

  • PHP nije prepoznat (iz naredbenog retka): Provjerite je li PHP dodan u PATH varijablu okoline. Na Linuxu, obično je to /usr/bin/php ili usr/local/bin/php.
  • PHP stranica se ne učitava (prikazuje se sirovi kod ili 404/500 greška):
    • Web server nije konfiguriran da obrađuje .php datoteke (nedostaje mod_php, proxy_fcgi ili fastcgi_pass).
    • PHP-FPM servis nije pokrenut (systemctl status phpX.X-fpm).
    • php-cgi.exe nije ispravno konfiguriran u IIS-u.
    • Provjerite Apache/Nginx error logove (/var/log/apache2/error.log ili /var/log/nginx/error.log).
  • Greške u php.ini (PHP ne radi, fatalne greške): Ako napravite sintaktičku grešku u php.ini, PHP se možda neće pokrenuti. Greška će obično biti zabilježena u sistemskim logovima (npr. journalctl -xe na Linuxu).
  • Stranice rade, ali nedostaje funkcionalnost (npr. baza podataka se ne spaja):
    • Provjerite phpinfo() izlaz kako biste vidjeli je li potrebna ekstenzija (npr. mysqli, pdo_mysql) učitana. Ako nije, omogućite je u php.ini i restartajte PHP-FPM/web server.
    • Provjerite PHP error logove (error_log direktiva u php.ini).

Zaključak

Instalacija i konfiguracija PHP-a ključan je korak u postavljanju web servera za razvoj ili hosting web aplikacija. Razumijevanje razlika između operativnih sustava, metoda instalacije, te važnosti ispravne konfiguracije php.ini datoteke i integracije s web serverom osigurava stabilno, sigurno i učinkovito okruženje. Uvijek budite oprezni s postavkama na produkcijskim serverima, dajući prednost sigurnosti i performansama. Redovito ažurirajte PHP na podržane verzije kako biste iskoristili najnovije značajke, sigurnosne popravke i poboljšanja performansi.