NB. Dette gjelder pr. område innenfor en gitt Vortex-host. Dvs. at vi skrur på kun for de områdene der det er behov, og vi beholder samtidig kontrollen med hvor det befinner seg PHP-applikasjoner. Hvis dette er aktuelt for dere, ta kontakt med oss. PHP-versjonen som kjøres er den til enhver tid støttede versjonen fra Seksjon for applikasjon- og integrasjonsplattformer, for tiden PHP 7.4.
Begrensninger
Følgende tekniske begrensninger gjelder for kjøring av PHP i Vortex
- Det er ikke mulig å gjøre noen form for skriving til eller oppretting av filer fra PHP.
- Det er ikke mulig å kjøre noen form for eksterne programmer/kommandoer fra PHP-skript.
- Åpning av filer fra PHP overstyres, slik at rettighetene som er satt i Vortex blir gjeldende.
PHP-applikasjoner
PHP-støtten i Vortex er ment som en hjelp til migrering av eksisterende løsninger og andre små-behov for PHP (enkle skript for mindre oppgaver o.l.). Vi tillater normalt ikke at større PHP-applikasjoner legges i Vortex. Eksempler slike applikasjoner er bloggverktøy som Wordpress, CMS-er og portalverktøy (Drupal), diskusjonsforum (phpbb), osv. Vortex er ikke en Apache-server og er ikke laget for å kjøre PHP, men er et selvstendig CMS i seg selv. Vi kan foreløpig ikke ta ansvar for sikkerhet og drift av slike PHP-applikasjoner og ønsker ikke at de kjører på serverene til Vortex.
Dersom du har behov for en PHP-applikasjon er det bedre å legge denne på en annen host. Kontakt Seksjon for applikasjon- og integrasjonsplattformer (www-drift@usit.uio.no) på USIT dersom du har spørsmål rundt dette.
Hvordan kjøre PHP-skript i Vortex
For at en fil skal gjenkjennes som et kjørbart php-skript, må filtype være satt til text/php på Om-arkfanen. Hvis man laster opp filer med fil-endelsen .php, vil vi gjette denne filtypen hvis nettleseren ikke sier noe annet.
Les de påfølgende avsnittene for viktig informasjon rundt sikkerhet, rettigheter og annet i forbindelse med kjøring av PHP-skript i Vortex.
Rettigheter på php-filer
Vanligvis er det ikke noe behov for å beskytte tilgangen til å lese kildekoden til dokumenter i Vortex, men dette vil fort være annerledes for php-filer. Fordi php-filer fort kan inneholde sensitive data, anbefaler vi at man alltid sørger for å skru av leserett for disse, og istedet bruker rettigheten Kun lese transformert under "Avanserte rettigheter" på Rettigheter-arkfanen, for å gi brukerne tilgang.
Inkludering av filer fra php-skript
Det er mulig å lese andre filer fra php. For at dette skal være sikkert, gjelder følgende begrensninger:
- Klienten autoriseres for kun lese transformert-rettighet (inkluderer også lese-rettighet) mot filene.
I praksis betyr dette at alle filer som inkluderes, bør ha samme rettigheter som php-skriptet. Dette gjøres enklest ved å samle alle filene i en mappe og bare sette rettigheter på mappa.
- Filer som inkluderes må ha samme eier som skript-fila.
Dette kan fort være en litt slitsom begrensning hvis flere jobber sammen om å lage en php-løsning. I slike situasjoner kan det være viktig å vite at administratorer på ressurser har rett til å ta eierskap.
Vi tillater åpning av filer (og includes) med absolutte paths (altså som begynner med '/') og relative paths.
For å åpne filer med absolutte paths må følgende gjøres:
include($_SERVER["DOCUMENT_ROOT"] . "/path/til/fil");
PHP og tegnsett
Når man jobber med PHP, er det en stor fordel å bruke UTF-8 som tegnsett. PHP-motoren har satt utf-8 som standard tegnsett. Det betyr at hvis man ikke setter noe annet selv i skriptet, vil PHP rapportere "Content-Type: text/html;charset=utf-8" til nettleseren. I tillegg vil Vortex alltid gjette at php-filer har tegnsettet utf-8 (med mindre man overstyrer dette på Om-arkfanen), og dette har betydning for eksempel hvis man redigerer skriptet på Rediger kildekode-arkfanen.
Hvis man må, er det er det fortsatt mulig å bruke iso-8859 som tegnsett. Men da må man sette Content-Type-headeren selv i php-skriptet (og overstyre tegnsettet til filen på Om-arkfanen). I tillegg er det slik at eventuelle forms, som sender parametere til php, eksplisitt må sende disse utf-8-kodet. Dette gjøres ved å sette accept-charset="UTF-8" på form-taggen (dette virker dessverre ikke pålitelig i alle nettlesere).
Dekorering og PHP
PHP script blir dekorert etter samme regler som HTML filer. Det vil si at markup og tekst som befinner seg utenfor <html>-taggen ikke vil bli vist. Det vil si at feilmeldinger fra PHP ikke vil bli vist hvis du kjører PHP utenfor <html>-taggen. Så derfor anbefaler vi at du kjører PHP slikt som vist i eksempelet under.
<html> <head> <?php $tittel = "En PHP side"; echo "<title>" . $tittel . "</title>"; ?> </head> <body> <?php $overskrift = "En PHP overskrift"; echo "<h1>" . $overskrift . "</h1>"; ?> </body> </html>
Hvis du jobber med et PHP script som ikke er pakket inn i en <html>-tag så er en nødløsning å skru av dekorering og parsing ved å legge følgene parametre til URL-en:
?x-prevent-decorating&x-prevent-parsing
Da vil du få det scriptet lager uten at dekoreringen til Vortex rører det.
Inkludering av php-skript i html-sider
Php-skript kan inkluderes i vanlige html-sider, ved å bruke komponenten "include:file virtual".