PHP Migratie FAQ

Uit Byte Docs

Inhoud

~E_DEPRECATED - Deprecated functies

Nadat ik ben over ben gegaan doet mijn site het niet juist meer en krijg ik de melding: " ... is deprecated"

In PHP 5.3 zijn sommige functies deprecated. Deprecated functies zijn functies die zullen verdwijnen in de volgende PHP versie (5.4 of 6.0) en waar geen support meer op geleverd wordt. Ze kunnen daarom het beste vermeden worden.

Hoe los ik dit op?

Om het probleem op te lossen kunt u twee dingen doen:

  1. Upgrade naar de laatste versie van uw pakket (aangeraden!)
  2. Lukt dat niet of verhelpt dat het probleem niet, dan kunt u tijdelijk de foutmeldingen uitschakelen.

Upgrade naar de laatste versie van uw pakket

Meestal zijn het de modules van standaardpakketten die problemen geven. Update naar de laatste versie van Joomla, Magento, Drupal etc. Update vooral ook alle modules. Deze zijn vaak het meest kwetsbaar. Kijk op de pagina CMS versies compatible met PHP5.3 welke CMS versies probleemloos werken op PHP 5.3.

Heeft uw softwarepakket nog geen nieuwe versie die goed werkt? Dringt u dan aan bij de auteur van het softwarepakket. Alleen als het niet wil lukken schakelt u de meldingen uit, zie onder.

Voor Magento, zie onder.

Schakel de foutmeldingen uit

Om de errormeldingen niet meer te laten zien en uw site weer te laten functioneren kunt u op het servicepanel de optie ~E_DEPRECATED onder error_reporting aanvinken. Hierdoor verdwijnen de meldingen uit het zicht en zal uw site weer werken. Zie ook Php Opties.

Let op! Byte raadt dit niet aan. Mochten we upgraden naar een volgende versie van PHP5, dan zorgt het uitzetten van de DEPRECATED meldingen ervoor dat de problemen bij die upgrade verborgen zijn. Dit maakt een volgende upgrade een stuk moeilijker.

Eigen code

Heeft u uw site zelf geschreven of laten schrijven, dan is het wegwerken van de foutmeldingen meestal vrij gemakkelijk. Kijk goed naar de foutmelding en zoek met behulp van Google en php.net de juiste oplossing. De meeste oplossingen zijn een regel code lang.

Ik gebruik Joomla, wat nu?

Joomla 1.0 gebruikers raden we aan te migreren naar 1.5. Versie 1.0 wordt niet meer onderhouden, en is ook niet geheel compatibel met PHP 5.3. Gebruikers van Joomla 1.5 wordt aangeraden te upgraden naar de laatste versie, en ook alle uitbreidingen te upgraden naar de laatste versie. Zie ook Joomla Php Upgrade voor meer informatie.

Ik gebruik Magento 1.3, wat nu?

De problemen die spelen met Magento 1.3 zijn gemakkelijk op te lossen. De standaardinstallatie van Magento bij Byte is aangepast, zodat e.e.a. vanzelf werkt.

Hoe kan ik Magento 1.3 werkend krijgen?

Het probleem ligt hem in de functie array_split die deprecated is en errors geeft. De symptomen zijn gemakkelijk op te lossen met een hack, zie daarvoor [[[Magento Php Upgrade]]].

Voor modules en scripts die u geschreven of gedownload heeft zult u een vergelijkbare oplossing moeten toepassen. Meestal is het omschrijven van array_split of het gebruiken van de juiste interne Magentofunctie de oplossing. Dit is echter nogal inhoudelijk.

Mocht u problemen hebben met de upgraden, dan kunt u contact opnemen met een van onze Magento partners. Die zijn ervaren bij het aanpassen van Magento en het oplossen van dit soort problemen. Kijkt u daarvoor op de Magento partnerlijst.

Ik heb E_DEPRECATED uitgezet, maar ik krijg nog steeds meldingen .... is deprecated??

Sommige CMS'en (bijvoorbeeld Joomla 1.0) veranderen de error reporting instellingen. U moet in dat geval uw CMS updaten, of de code wat aanpassen. Zie ook Joomla Php Upgrade.

Ik heb E_DEPRECATED uitgezet en mijn CMS aangepast, maar ik krijg nog steeds meldingen .... is deprecated??

Sommige extensies (onder andere jcalpro, sommige Joomla templates, en sommige ideal extensies) veranderen ook de error reporting instellingen. U moet de extensie die het probleem veroorzaakt dus opsporen en ofwel updaten, ofwel verwijderen, ofwel u moet de error_reporting regels in deze extensie verwijderen.

Een (test) subdomein van uw site in PHP 5.3

Om uw site in PHP 5.3 te testen kan het handig zijn om een subdomein voor uw site aan te maken, bijvoorbeeld
test.mijnsite.nl. Op dit subdomein maakt u een kopie van uw live site. Om alleen het subdomein in PHP 5.3 te draaien maakt u de volgende .htaccess aan in de directory van het subdomein :
AddType application/cgi-php53 .php

Let op: Gebruik geen .htaccess voor uw live site, mochten wij in de toekomst wijzigingen doorvoeren kan hierdoor uw site stukgaan. U kunt uw live site overzetten op PHP5.3 via het Servicepanel.

Site in PHP 5.3 draaien voor uw eigen ip-adres

In principe raden we aan de site op een rustig moment om te zetten naar php 5.3 op het servicepanel. Als u dat liever niet doet en ook liever geen test subdomein maakt, kunt u de site ook met een rewriterule alleen voor uw eigen ip-adres door php 5.3 laten afhandelen. Let wel op dat we dit niet aanraden en hier ook geen ondersteuning op geven. Hiervoor maakt u een .htaccess met de regels

RewriteEngine on
RewriteCond %{REMOTE_HOST} ^UW IP-ADRES$
RewriteRule ^(.+\.php)$ - [T=application/cgi-php53]

Hebt u al een .htaccess, dan zet u de laatste twee regels onder de regel 'RewriteEngine on'. Zie ook Website Rewrite Rules.

PEAR Packages, werken die nog?

Ja, en nee. De packages werken nu nog, maar een aantal geven de melding dat een functie deprecated is. In sommige gevallen kunt u dit oplossen door een nieuwere versie van een PEAR Package te installeren.

Hoe u dit kunt doen, is te vinden op Php Pear

Welke PEAR Package(s) werken niet goed met PHP 5.3?

MDB2 (stable & beta) werkt (nog) niet goed met PHP 5.3 samen. Deze package geeft een aantal deprecated message aan.

Hints&Tips

  1. In PHP5.2 nog wordt gedoogd wanneer het 2e argument van explode al een array is. Dus bv: explode(",", array()) werkt in PHP5.2 maar niet in PHP5.3
  2. Wanneer je bij inheritance expliciet de constructor van een parent aanroept moet deze gedefinieerd zijn. Dit werkt wel in PHP5.2 maar niet in PHP5.3. In PHP5.3 moet je in class A expliciet function A() als constructor definiëren.

Voorbeeld:

class A
{
}
 
class B extends A
{
function B()
{
parent::A();
}
}
?>

(1 & 2 met dank aan Gijs Mekking, van Netgemak.nl)

Ik gebruik helemaal geen PHP?

Indien uw site geen gebruik maakt van PHP, kunt u er enkel voor zorgen dat u hierover geen communicatie meer ontvangt, door toch in te loggen op het Service Panel en PHP 5.3 aan te vinken. Ons systeem registreert dan dat u hierover geen mailtjes meer hoeft te ontvangen omdat u al "over bent".

Hulp nodig?

Zou u graag hulp of advies krijgen van een specialist? Neem dan even een kijkje op onze pagina met partners die kunnen assisteren bij de PHP migratie:

Daar vindt u ongetwijfeld een geschikte partij tussen.

De huidige waardering is: 81/100 (1 stemmen)
 You need to enable JavaScript to vote
  • Deze pagina is het laatst bewerkt op 29 nov 2011 om 15:11.
  • Deze pagina is 571 keer bekeken.

We proberen de kwaliteit van onze kennisbank voortdurend te verbeteren.
Geef de informatie op deze pagina een waardering met de slider hierboven.