Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 46 reacties
Submitter: AtleX

Vrijdag zijn voor de laatste keer veiligheidslekken in PHP 4 gedicht. De ontwikkelaars roepen beheerders op hun servers te voorzien van versie 5 van de populaire programmeertaal.

De ondersteuning voor de vierde versie van PHP eindigde al op 31 december 2007, maar met de vrijgave van PHP 4.4.9 donderdag is ook de laatste beveiligingsupdate voor PHP 4 een feit. PHP raadt beheerders met klem aan hun serverpark te voorzien van PHP 5. Jarenlang werden versie 4 en versie 5 beide onderhouden, om beheerders zo de tijd te geven de overstap naar de nieuwe versie te maken. De eerste versie van PHP 5 zag al halverwege juli 2004 het daglicht, en deze branch is inmiddels aanbeland bij versie 5.2.6. De eerste stabiele versie van PHP 4 verscheen in mei 2000.

PHP 4 was de eerste versie van de taal met oop-mogelijkheden. Deze implementatie kreeg echter veel kritiek, omdat de oo-functionaliteit voornamelijk cosmetisch zou zijn. In versie 5 is hier aanzienlijk meer aandacht aan besteed: niet alleen zijn veel van de inconsequenties uit PHP 4 verholpen, ook zijn de objectgeörienteerde mogelijkheden flink uitgebreid.

Moderatie-faq Wijzig weergave

Reacties (46)

PHP, een leuke taal om te leren scripten. Hier was ik vroeger mee in aanmerking gekomen voor mijn eerste dynamische website. Websites bouwen doe ik nog wel, PHP niet meer... schiet mij toch een beetje te kort maar dat is mijn mening.

Wanneer komt PHP6 er aan? En zitten daar ook voordelen in (waarschijnlijk wel maar welke?)
Hier een lijstje wat er gaat veranderen:

http://www.corephp.co.uk/archives/19-Prepare-for-PHP-6.html

Met versie 6 zullen veel bestaande scripts gaan stuk lopen, maar de taal zelf zal een stuk duidelijker worden.
Een meer uitgebreide beschrijving over wat er gaat gebeuren in PHP6:

http://www.php.net/~derick/meeting-notes.html

Veel bestaande scripts zullen vooral stuk gaan lopen omdat de EREG functie naar PECL wordt verplaatst.
Onder andere namespaces heb ik me laten vertellen.
Namespaces zullen al beschikbaar zijn in versie 5.3 van PHP
Versie 6 zal voornamelijk gefocused zijn op UTF-8 Unicode support

[Reactie gewijzigd door gertjuhh op 8 augustus 2008 13:53]

Beetje off-topic, maar hoezo schiet PHP te kort? Het is absoluut geen perfecte taal, ik vind het heel rommelig, maar het kan ontzettend veel.
dit is een taal waar elke programmeur zich kan onderscheiden van de hobbyisten. Wie in ASP.NET een website maakt heeft te maken met eenheidsworst en overhead van een heel bombastisch framework. PHP is de optimale taal om online te doen wat het moet doen. Wie zware applicaties wil schrijven kan zich beter wenden tot andere talen, maar voor de modale online app heb je niet meer nodig dan PHP en een goede programmeur die weet wat hij doet...
veel overhead? asp.net wordt gecompileerd naar CLR, php wordt runtime uitgevoerd. Dan neem ik aan dat PHP meer overhead heeft.
Een beetje hoster heeft dan ook een accelerator draaien die de gecompileerde bytecode cachet, waarmee dat probleem verholpen is.
om nog maar te zwijgen over het feit dat .net zo portabel is als een vliegdekschip (niet dus) en je daarmee onherhoepelijk vast zit aan het windows platform. (hoewel dat eigelijk niet nodig zou zijn, want qua basis is het zo portable als Java) Voor veel belangerijke online en offline (of intranet) apps is dat simpelweg niet acceptabel. Dus wijk je voor complexe dingen snel uit naar Java, en voor het meer eenvoudige werk naar PHP en Ruby on Rails.

Perl zie je ook nog wel eens.
PHP, een leuke taal om te leren scripten. Hier was ik vroeger mee in aanmerking gekomen voor mijn eerste dynamische website. Websites bouwen doe ik nog wel, PHP niet meer... schiet mij toch een beetje te kort maar dat is mijn mening.
Dan heb je je niet echt in de taal en het onderliggende systeem verdiept. Vergeet niet dat als je PHP op een *nix machine draait, je ook toegang tot alle features van die machine krijgt en dat maakt het programmeren in PHP verschrikkelijk veelzijdig. Denk maar eens aan applicaties als FreePBX om de open source PBX Asterisk te beheren, Squirrelmail voor webmail, Webmin, Cpanel/WHM, video upload en conversie met ffmpeg en/of mencoder, Hylafax, protocol gateways voor bijv. het versturen van mass mailings of het leechen van sites etc etc etc.
Dat is bij vrijwel alle server side omgevingen het geval, als je php naast bijvoorbeeld Java zet kom je er achter wat Java zelf allemaal te bieden heeft.
PHP6 is al een tijdje zelf te compilen, wij draaien het hier ook al naast de PHP5 installatie, en tot dusver bevalt ons dat goed, en hebben we nog geen problemen.

Mocht je het zelf willen uitproberen, dan zal er vast wel een tutorial voor wamp/xampp zijn.
De eerste versie van PHP 5 was misschien wel in 2004 gereleased. Maar het heeft tot 2006 geduurt voordat het eindelijk mature was en niet meer opeens drastische verandering kreeg (vanaf 5.1.2 iirc).
Ik kreeg net een mailtje van mijn hostingprovider dat ze PHP 4 niet langer ondersteunen, omdat het niet langer bijgewerkt wordt.
Nu moeten de hosters maar eens volgen, tja veel van de klanten zullen wel gaan 'zeuren' dat bepaalde dingen niet meer werken, maar ach PHP5 ligt ruim 4 jaar op de plank.

@ Cytherea, er komen namespaces aan ja, maar de implementatie is nog niet super. Maar goed, dat kan natuurlijk nog wel veranderen.
Leuk dat je het over klanten hebt die wel "zullen gaan zeuren", je zal maar een webshop hebben die alleen draait op PHP4 en een migratie van je scripts naar PHP5 is niet mogelijk.
Waarom zou een migratie niet mogelijk? Of doel je op een volledig automatische migratie of bij gebrek aan middelen? Zo moeilijk is het ook weer niet.
Een migratie van je scripts is toch altijd mogelijk? Het is maar net hoeveel tijd je bereid bent te investeren in het herschrijven van scripts. Overigens is het al een heel tijdje good-practice PHP te scripten die beide versies ondersteund.
En hoeveel jaren heben ze de tijd gehad om nieuwe scripts te maken of aantepassen zodat het wel werkt ?

er zijn genoeg jaren overheen gegaan ....
Als je een webshop hebt kan je eventueel investeren in een eigen server.

Daarnaast bestaat PHP5 al zowat 4 jaar, tijd genoeg om iets te laten overzetten. Vanaf het moment dat PHP5 uitkwam wist men dat de dagen van 4 geteld waren.
Ik zie het probleem niet zo, de eigenaar van die webshop wordt dan nu geforceerd om naar PHP5 te migreren omdat PHP4 niet meer ondersteund wordt door z'n hosting provider.

Stel nu dat er over een week een ernstig security risico gevonden zou worden in PHP4, dan wordt dit niet meer gepatched, en moet de eigenaar van de webshop alsnog migreren om de veiligheid van zijn winkel te garanderen.

Hoe dan ook, migreren is een must wanneer er inkomsten afhangen van je PHP applicatie.
Dat is een van de grote nadelen van PHP, de major versions zijn niet compatible (genoeg) met elkaar, toen PHP5 net uit was zag je servers die PHP3, PHP4 en PHP5 parallel draaide om maar de scripts te blijven ondersteunen.
Het zou helemaal geen slecht idee zijn als PHP net als vele andere talen een standaard krijgt (zoals bijvoorbeeld C99). Dat er nieuwe functies aan toegevoegd worden is dan natuurlijk geen probleem (op een elkele functienaam na dan). Desnoods maken ze de mogelijkheid om in een script, danwel door de extensie, aan te geven dat PHP het script moet parsen in "4.x-compatibility-mode", maar ik vind dat het ondertussen oud genoeg is om een dergelijke freeze te mogen verwachten.
PHP is zijn eige standaard. De C standaarden zijn gedefinieerd omdat het vele C compiler providers waren. Voor PHP zijn er maar 2 afaik (PHP dus en Quercus (PHP in Java))
Nee, dat bedoel ik niet. Ik bedoel dat PHP voor zichzelf een standaard schept om zich aan te houden. Om het zo te bekijken zijn er dus verschillende PHP parser providers, namelijk versie 3, 4 en 5, aangezien ze niet met elkaar compatible zijn, zijn het dus verschillende standaarden, of geen van allen standaarden.
Dat krijg je als er nieuwe features worden toegevoegd en daarom is het handig dat je bijv. standaard PHP 4 op je server hebt draaien en met een simpele .htaccess PHP 5 kan activeren. Toch?
Nieuwe features toevoegen betekend niet dat je niet meer backwards compatible bent. Kijk bijvoorbeeld naar Java. In Java 5 zijn veel nieuwe feature toegevoegd, maar je java programmas gecompiled met 1.0 werken nog steeds.

PHP is enorm inconsistent in naam geving van functies en volgorde van argumenten, en gedrag is ook vaak veranderd (bijvoorbeeld tussen PHP 4 en PHP 5.1 is de volgorde van finalization van verschillende onderdele vaak van positie veranderd).

Het zou mooit geweest zijn als ze daar een einde aan gemaakt hadden in PHP5 (omdat ze toch verschillende ding kapot maakten) Maar dat is dus niet gebeurt, het is nog steeds een clusterfuck.

Maar goed, dit heeft niet altijd veel te maken met de standaard van de taal PHP. Veranderingen zoals pass-by-value van object naar pass-by-reference hebben wel invloed op de taal.

[Reactie gewijzigd door elmuerte op 8 augustus 2008 16:22]

Wordt tijd. En voor diegenen die hun website nog niet naar PHP 4 geconverteerd hebben: zijn er geen automatische conversietools oid? Lijkt mij vrij voor de hand liggend dat je een programma loslaat die niet-compatible zooi vervangt met hun PHP 5 equivalent.
volgens mij weet je niet helemaal waar je over praat....


dingen als pass by name en pass by reference zijn behoorlijk grote veranderingen. Ik kan me niet voorstellen dat je dat soort dingen automatisch kunt "converteren" Het is niet een .doc omzetten naar een .pdf oid.....
Wat PHP echt ontbeert is een fatsoenlijke ontwikkelinfrastructuur. Over weak typed ellende, het ontbreken van een echte class library en de gaten in OO is nog heen te komen.

Zelfs Eclipse werkt lekkerder met Java dan met PHP vreemd genoeg.
Eclipse is geheel ontwikkeld voor het programmeren in Java. Andere functionaliteiten zijn later pas aan orde gekomen. Logisch dus dat het beter werkt met Java dan met PHP.

Maar ik werk sinds de eerste release van PDT met Eclipse (voorheen had ik alleen Zend Studio) en het is echt een goede IDE. Hierin kun je zelfs de PHP class library aan (echter niet geheel up-to-date).
Eclipse is dan ook ontwikkeld voor Java en niet voor PHP, zo vreemd is dat niet ;) al vond ik PHPeclipse wel redelijk werken

edit: te laat

[Reactie gewijzigd door Dutchy_ op 8 augustus 2008 15:54]

Dat werd wel tijd :P
Wel netjes dat versie 4 nog zolang werd 'onderhouden'.

Ik vraag me af hoeveel servers er nog op versie 4 draaien.
Veel. Er zijn namelijk nog een hoop scripts dan wel websites die niet anders dan PHP4 kunnen hebben. PHP5 is niet echt backwards compatible met sommige scripts.
PHP5 is niet echt backwards compatible met sommige scripts.
Volgens mij geldt dit echter alleen voor de scripts die ook gebruik maakten van de OO features van PHP4.

Gewone huis-tuin-en-keuken scriptjes draaien gewoon goed op PHP5.
Waar ze bij PHP juist rekening mee hebben gehouden is dat PHP 4 klasse definities ("var", klassenaam als constructor, ontbreken van "public") ook in PHP 5 blijven werken. "var" werkt als "public", de klassenaam kan nog steeds als constructor gebruikt worden.. de enige grote incompatibiliteit is eigenlijk dat in PHP 5 objecten standaard by-reference zijn.

Echter sinds PHP 5.2.0 hebben ze het nog een stapje moeilijker gemaakt, door de magic __toString() methode niet standaard een object ID terug te laten geven bij alle klassen. Hierdoor zullen je script (ook van voor 5.2) kapot gaan als je en object als string wilt laten zien:
$foo = new Foo();
echo $foo; // in PHP 5.1.* zou dit Object #1 laten zien

Ik heb de afgelopen jaren al een aantal PHP 4 scripts gemigreerd naar PHP 5, en nog nooit grote problemen tegengekomen. Het meeste werkt gewoon goed. (Mag je ook verwachten als je de erg korte lijst van backward-incompatible changes ziet: http://www.php.net/manual/en/migration5.incompatible.php )
Dit soort dingen zijn ook mijn grootste bezwaar tegen PHP. Ik heb heel veel met PHP gewerkt, maar ben nu toch aan het overstappen naar JSP.

Java is wel backwardscompatible. Je krijgt met hele oude code wel een lijst aan waarschuwingen over verouderde stukken, maar die kan je negeren. Het werkt in iedergeval wel.

Als de volgende PHP versie een 'compatibility' modus ofzo krijgt, dan ben ik weer terug.
Er bestaat een compatibility mode. Zowel in php.ini, apache (via php_value) als via je script in te stellen: ze1_compatibility_mode (0 = uit, 1 = aan).
Dit heeft bijvoorbeeld effect op de manier waarop met objecten wordt omgegaan.
PHP5 is vrij goed backwards compatible met PHP 4. Ze zijn juist gestopt met het ondersteunen van dingen die in de laatste versie van PHP 4 nog zaten onder de noemer backwards compatibility (dus PHP 3, maar ook PHP 4 < bepaalde versie).
Het grootste probleem is dat men tegenwoordig bij de overstap naar PHP5 ook eindelijk eens register_globals uitzet, wat voor sommige <PHP4.1of gewoon lui geschreven scripts problemen oplevert. De rest van de mogelijke problemen zijn niet echt veel voorkomend.
Dat is nog wel het kleinste probleem. Het grootste probleem is veranderde functies als array_merge, en het totaal falen van PHP bij sommige technieken die in PHP4 nog prima werkten. De grootste problemen zitten hem in frameworks die poogden te simuleren wat de taal standaard zou moeten ondersteuken. Juist dat soort code is geneigd om stuk te gaan als de taal zelf dat soort dingen eindelijk gaat ondersteunen.

Overigens kom je exact dezelfde soorten problemen tegen bij de overgang van 5.1.x naar 5.2.x. Vreemde "bugs" die veroorzaakt worden door lompe keuzes van de PHP developers.
Er is inmiddels meer dan zat tijd geweest voor ontwikkelaars om hun scripts met PHP 5 werkend te maken en PHP moedigt ook al geruime tijd aan om naar 5 te upgraden. Iemand die nu nog software gebruikt die per se PHP 4 moet hebben, moet toch eens sterk gaan overwegen een ander pakket te zoeken, de ontwikkelaar vind het blijkbaar niet nodig zijn producten goed te onderhouden.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True