A PHP egy általános szerveroldali szkriptnyelv dinamikus weblapok készítésére. Az első szkriptnyelvek egyike, amely külső fájl használata helyett HTML oldalba ágyazható. A kódot a webszerver PHP feldolgozómodulja értelmezi, ezzel dinamikus weboldalakat hozva létre. Rasmus Lerdorf 1995-ben indította útjára. Ma a The PHP Group tartja fenn és fejleszti. A PHP szabad szoftver, de licence nem csereszabatos a GNU licenccel, mivel megkötéseket tartalmaz a PHP név használatára.
A PHP születésekor csupán egy makrókészlet volt személyes honlapok karbantartására. Innen jön az eredeti név is: Personal Home Page Tools. A rövidítés jelentése később PHP: Hypertext Preprocessor lett, így rekurzívvá vált.PHP Manual: Preface , www.php.netPHP.net General FAQ Később a PHP képességei bővültek, így egy önállóan használható programozási nyelv alakult ki, amely képes nagyméretű webes adatbázisalapú alkalmazások működtetésére is.
A PHP nyelv népszerűsége képességeinek bővülésével folyamatosan nőtt. A NetCraft elemző cég felmérései szerint a PHP-t 1999 novemberében több mint 1 millió kiszolgálón használták. Ez a szám 2001 szeptemberére 6 millióra ugrott, 2003 októberében pedig már állítólag 14 millió gépre telepítették a PHP-t. A SecuritySpace.com szerint a PHP az Apache legnépszerűbb modulja, a mod_ssl-t, a perl modult és a FrontPage-et is maga mögé utasítva. 2007 áprilisában több, mint 20 millió honlap és 1 millió szerver használta.
A hagyományos HTML lapokkal ellentétben a kiszolgáló a PHP-kódot nem küldi el az ügyfélnek, hanem a kiszolgáló oldalán a PHP-értelmező motor dolgozza fel azt. A programokban lévő HTML elemek érintetlenül maradnak, de a PHP kódok lefutnak. A kódok végezhetnek adatbázis-lekérdezéseket, létrehozhatnak képeket, fájlokat olvashatnak és írhatnak, kapcsolatot létesíthetnek távoli kiszolgálókkal. A PHP-kódok kimenete a megadott HTML elemekkel együtt kerül az ügyfélhez.
A PHP-t parancssori alkalmazásként is telepítik, így alkalmas parancsfájlok készítésére. Számos rendszergazda automatizálási célokra is a PHP-t használja, pedig ezt a feladatot hagyományosan Perl- vagy shell scriptekkel oldották meg.
Története A PHP fejlődése kezdetén csak CGI-programok halmaza volt. Ezeket Rasmus Lerdorf néhány Perl szkript lecserélésére írta, amelyeket honlapjának karbantartására (például önéletrajzának megjelenítésére és a látogatottság mérésére) használt. Később ezeket a programokat kombinálta a szintén általa írt Form Interpreter (űrlap-értelmező) alkalmazással - így jött létre a PHP/FI, ami már jóval szélesebb funkcionalitással bírt. Az új, C nyelven megírt változat képes volt adatbázisokhoz kapcsolódni és segítségével egyszerű dinamikus weboldalakat is létre lehetett hozni. Lerdorf 1995. június 8-án adta ki a PHP első nyilvános változatát, hogy külső segítséggel gyorsabbá tegye a hibák megtalálását és a kód további fejlesztését. Az új verziót PHP 2-nek nevezte el és már megtalálhatóak voltak benne a mai PHP alapvető tulajdonságai: a Perl-éhez hasonló változók, az űrlapok kezelése és a HTML-kód beszúrásának lehetősége. A PHP szintaktikája is hasonló volt a Perl-éhez, de annál jóval korlátoltabb, egyszerűbb és kevésbé egységes volt.
1997-ben Zeev Suraski és Andi Gutmans, két izraeli fejlesztő újraírta az értelmezőt, ezzel megteremtve a PHP 3 alapját - ekkor született meg a PHP új neve, a PHP: Hypertext Preprocessor rekurzív rövidítés is. A fejlesztőcsapat 1997 novemberében, két hónapnyi béta-tesztelés után kiadta a PHP/FI 2-t, majd megkezdődhetett a PHP 3 tesztelése és végül megjelenése 1998 júniusában. Suraski és Gutmans ekkor megint a PHP-mag újraírása mellett döntött, amiből 1999-ben megszületett a Zend Engine. A két fejlesztő ekkor alapította meg a Zend Technologies-t is, ami máig aktívan ellenőrzi a PHP fejlesztését.
A Zend Engine 1.0 által hajtott PHP 4 2000. május 4-én jelent meg. Ezt követte 2004. július 13-án a következő nagy mérföldkőnek számító, az új Zend Engine II-n alapuló PHP 5. Az ötös verzió sok újítást tartalmazott: fejlettebb objektumorientált programozási lehetőségeket, a PDO (PHP Data Objects) adatbázis-absztrakciós kiterjesztést, és sok teljesítményt növelő javítást is.
A PHP 4 fejlesztése 2007 végén maradt abba, az utolsó megjelent verziója a 4.4.8 verziószámot viselte - a PHP Group ezekhez és a PHP 4 előző változataihoz 2008 augusztusáig biztosított biztonsági frissítéseket. 2008. február 4-étől A GoPHP5 kezdeményezés keretében több vezető PHP-alapú szabad-szoftver projekt döntött a PHP 4-támogatás megszüntetéséről, hogy ezzel mozdítsák előre az ötös verzióra való áttérést.
A PHP 5 évei alatt több nagyobb fejlesztés zajlott. Ezeket a PHP 6-ban adták volna ki, de problémák adódtak a Unicode támogatásával. Így a kevésbé problémás eszközöket a PHP 5 különböző verzióiba tették bele, a többit pedig összevonták egy külön ágba. Innen fog jönni a PHP 6, miután sikeresen megoldották ezeket a problémákat.
A PHP 5.4-ből eltávolították a következőket: register_globals, a speciális karakterek backslash-es escape-elése, és a biztonságos mód. Ezek az eszközök biztonsági rést nyitottak a PHP programokban, ezért távolították el őket. Az escape-eléshez vannak más eszközök, például az addslashes() függvény, a MySQL utasításokban pedig a mysql_real_escape_string(). Mindezek már a PHP 5.3-ban is elavultnak számítottak, és figyelmeztetést váltanak ki.
A 2011-es állapot szerint a PHP natívan nem támogatja a Unicode-ot és a több bájtos karaktereket tartalmazó stringeket. Ezek majd a PHP 6-ba fognak bekerülni, ami lehetővé teszi majd, hogy a neveknek ne kelljen csupán ASCII karakterekből állnia.
Jelenleg a PHP 7 főverzió a nyelv egyetlen aktívan fejlesztett verziója, a még támogatott legrégebbi verziója a 7.1-es.
Léteznek PHP értelmezők 32 és 64 bites platformokra is. Microsoft Windowsra csak egy 32 bites disztribúció létezik, ami miatt még szükséges az Internet Information Services (IIS) 64 bites rendszerein a 32-bit-támogatás. A korábban már létezett kísérleti 64 bites PHP 5.3.0-értelmezőt visszavonták.
A PHP nyelv szabad, de licence kimondja, hogy a származtatott termékek nem használhatják nevükben a PHP szót a [email protected] írásos engedélye nélkül. Emiatt a PHP licenc nem csereszabatos a GNU General Public License-szel.
A PHP működése bélyegkép|250px|A LAMP (szoftvercsomag) tartalmazza a PHP-t A PHP oldalak elkészítésénél a HTML-t gyakorlatilag csak mint formázást használják. Ezen lapok teljes funkcionalitása a PHP-re épül. Amikor egy PHP-ben megírt oldalt akarunk elérni, a kiszolgáló először feldolgozza a PHP utasításokat, és csak a kész (HTML) kimenetet küldi el a böngészőnek. Így kliensoldalról nem látható a programkód. A feldolgozáshoz egy ún. interpretert (értelmezőt) használ, amely általában a webszerver egy külső modulja. Ebben hasonlít más szerver oldali szkript nyelvekre, mint a Microsoft ASP.NET-je, a Sun Microsystems JavaServer Pages, és a mod_perl. Az 5.4-es verzió óta a nyelv tartalmaz egy egyszerű, parancssorban beállítható webszervert.
A PHP nyelv lényegében a HTML nagymértékű kiegészítése. Rengeteg olyan feladat végezhető el vele, amelyre az ügyféloldali szkriptek nem képesek (vagy ha igen, korlátozottan). Ilyenek a bejelentkezés, az adatbáziskezelés, fájlkezelés, kódolás, adategyeztetés, kapcsolatok létrehozása, e-mail küldése, adatfeldolgozás, dinamikus listakészítés, és hasonlók. Mindenütt, ahol sokszor ismétlődő lépésekből álló feladatsort kell végrehajtani (például képek listázása és linkelése, listakészítés stb.), ez a programnyelv nagyszerű segítség. Alapvetően szűrőként működik, ami egy bemeneti fájlból egy kimeneti fájlt állít elő. A PHP 4 óta a parser lefordítja a kódot, hogy a Zend motor lefuttathassa azt.
Sok különböző platform használja, és relációs adatbázisok kezelésére is megfelel (RDBMS). Ingyenes és nyílt; a PHP Group feljogosítja a fejlesztőket a nyelv bővítésére és beállítására. A webfejlesztésben népszerűvé vált LAMP struktúrában a P többnyire a PHP-re utal, - bár lehet a Python vagy a Perl nyelv rövidítése is. A többi betű rendre a Linux, az Apache HTTP Server és a MySQL rövidítése. Hasonló csomagok más operációs rendszerekre is elérhetők: a WAMP Windows, a MAMP pedig Mac OS X rendszerre. Az XAMPP is ilyen, platformfüggetlen szoftvercsomag.
2007 áprilisában több, mint 20 millió internetes tartomány mögött futott PHP alkalmazás, és a mod_php lett a legnépszerűbb Apache HTTP Server modul. A webszerverek 75%-án használtak PHP-t. Több tartalomkezelőt is PHP-ben írtak. Ilyenek a MediaWiki, a Joomla!, az eZ Publish, a SilverStripe, a WordPress, a Drupal és a Moodle. Minden olyan weboldal, amit ezekkel hoztak létre, PHP-ben íródott; így a Wikipédia, a Facebook, és a Digg felhasználói felülete is.
Egyéb futási módok A PHP programok futhatnak közönséges programként is. (Tehát nem HTML oldalba építve). Ezt a lehetőséget azonban ritkán használják ki. Ha mégis, sokszor weblapokkal kapcsolatos időzített folyamatok megvalósításához alkalmazzák, mivel azok azonos programnyelven, azonos megközelítési módon hajthatók végre.
Lehetőség van komplex konzolos alkalmazások írására is, ncurses használatával.
Microsoft Windows platformra is írhatók grafikus programok PHP-ben. Ehhez több mód is adott:
PHP-GTK - a sok program által használt Gimp Tool Kit függvényeit és felületi eszközeit lehet elérni.
Winbinder - egy fejlett modul- és futtatókörnyezet-páros. A standard felületi elemeket teszi elérhetővé, valamint lehetőséget ad egyedi elemek létrehozására. A csomag tartalmaz egy integrált fejlesztő eszközt is, melynek segítségével Drag and drop módszerrel lehet összerakni a kívánt felületet.
A PHP támogatta a keretrendszerek fejlesztését, melyek építőelemeket és tervezési módszereket ajánlanak a prototípus alapú tervezéshez és fejlesztéshez. Ezek közé tartoznak a CakePHP, a Symfony, a CodeIgniter, a Yii Framework, a Nelli, és a Zend Framework, a webalkalmazások fejlesztéséhez hasonló eszközökkel.
Fordítóprogramok A PHP nyelvet eredetileg értelmezett szkriptnyelvnek írták meg. Azóta már több fordító is létezik, melyek elszakítják a nyelvet az értelmezőtől. Előnyük a gyorsabb futás, a statikus analízis lehetősége és a más nyelvekkel való jobb együttműködés.
Lehetséges módszerek: HipHop - a PHP-kódot C++-kóddá alakítja, majd futtatható változatot készít belőle. A Facebook fejlesztői fejlesztik. Nyílt forrású. php2c - a php kódot C kóddá alakítja php2exe - több megoldás is létezik. Ezek nagy része csak részleges. Phalanger - CIL-be fordít.
Ezek a módszerek kétszeresére gyorsították a PHP-ben írott programokat.
Optimalizáció PHP-ban az 5.3-as verzió óta van szemétgyűjtés. A garbage collector eltakarítja azokat az objektumokat és más megjegyzett dolgokat, amikre feltehetően már nem lesz szükség. Ekkortól ehhez már nem kell Zend Optimizert installálni.
A PHP szkriptnyelv. A kódot az értelmező futás közben fordítja, és azonnal végre is hajtja. Léteznek fordítók is, hogy ne kelljen a kódot mindenki számára külön lefordítani.
Vannak olyan egyedi (nem gyártó által elismert) modulok, melyek egyfajta köztes megoldást nyújtanak: nem a nyers forráskód kerül tárolásra, hanem egyfajta byte-kód. Ez csak a feldolgozás gyorsítására szolgál. Van rá hivatalos megoldás is. Ennek lényege, hogy az egyes futásokkor megvizsgálja a forrást, és ha az megváltozott, a felesleges részeket (megjegyzések, fölös blokk-kezdések, white space karakterek) kiszűrve generál egy köztes állapotot tároló állományt. Ha a kód nem változott, betölti az előbb eltárolt „könnyített” változatot, és azt futtatja. Ez jelentheti azt is, hogy az ember által olvasható kódot tokenizálja. Így a feldolgozás egy részét „megspórolva” fut a program.
Az optimalizálók tömörebbé teszik a kódot, összeolvasztják a redundáns utasításokat, és más hasonló változtatásokat tesznek, hogy a végrehajtás gyorsabbá váljon. A PHP-szkriptekben gyakran van erre lehetőség. Az eAcceleratornak van PHP kiterjesztése. Bizonyos esetekben ez a módszer nem működik, mivel a kód tartalmazhat nemfeldolgozható elemeket.