Scripting update van 7.4 naar 8.0

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Nanno Koerts

Nanno Koerts

27/06/2022 17:47:41
Quote Anchor link
Beste mensen,

Ik heb onlangs mijn gehele scripting zo goed als mogelijk omgezet van 5.4 naar 7.4.
Alles werkt gelukkig naar behoren. Maar als ik nu naar versie 8 overschakel dan loopt mijn website vast. Ik zie geen error afhandeling op de pagina dus ik weet ook niet wat ik aan moet passen. Ik vernam dat er diverse drastische aanpassingen zijn gedaan in 8.0 maar kom er niet goed uit welke dat allemaal zijn.
Is er een tool om mijn huidige script in te laden en advies krijg van de tool wat er fout is of anders moet?
Is er een lijst met een overzicht van de wijzigingen?

Graag jullie input.

Groet,

Nanno
 
PHP hulp

PHP hulp

28/03/2024 15:23:48
 
- Ariën  -
Beheerder

- Ariën -

27/06/2022 19:40:56
Quote Anchor link
Zie hier de migratielijst: https://www.php.net/manual/en/migration80.php
Ook oudere versies staan er vermeld.

Maar bekijk ook vooral de error_log van je site. Die zou altijd aan moeten staan.
Als je die afwerkt, dan kom je wel bij een goed werkende website.
Gewijzigd op 27/06/2022 19:41:35 door - Ariën -
 
Nanno Koerts

Nanno Koerts

27/06/2022 20:57:13
Quote Anchor link
- Ariën - op 27/06/2022 19:40:56:
Zie hier de migratielijst: https://www.php.net/manual/en/migration80.php
Ook oudere versies staan er vermeld.

Maar bekijk ook vooral de error_log van je site. Die zou altijd aan moeten staan.
Als je die afwerkt, dan kom je wel bij een goed werkende website.


Hoi Arien,

ik host mijn website bij Strato waar de php op staat geinstalleerd. Ik kan hier verder geen logging in vinden.

Dit staat er in de php info vermeld:

error_log: no value
error_prepend_string: no value
error_reporting: 22519

Heb jij enig idee wat ik hiermee kan doen?
 
Jan R

Jan R

28/06/2022 07:05:43
Quote Anchor link
Misschien een klein beetje moeite doen.
1° hit via google https://www.strato.nl/faq/hosting/logfiles-downloaden/
 
Ad Fundum

Ad Fundum

29/06/2022 10:15:04
Quote Anchor link
Nanno Koerts op 27/06/2022 17:47:41:
Ik vernam dat er diverse drastische aanpassingen zijn gedaan in 8.0 maar kom er niet goed uit welke dat allemaal zijn. [...]
Is er een lijst met een overzicht van de wijzigingen?

https://www.php.net/manual/en/migration80.php

Zie vooral de Backward Incompatible Changes. Concreet betekent dit dat elke nieuwe PHP-versie je code stuk kan maken. PHP wordt daardoor zelf wel steeds (een beetje) beter, maar je loopt elke keer achter de feiten aan. In de upgrade naar PHP 8 hebben ze zelfs de booleaanse logica aangepast. Niet echt handig als je code geen unit tests heeft.
Ik loop hier zelf ook tegen aan, ik heb helaas niet veel unit tests in mijn eigen code, en hoop voor het verlopen van 7.4 op 28 november 2022 van PHP af te zijn.

Toevoeging op 29/06/2022 10:21:48:

Nanno Koerts op 27/06/2022 17:47:41:
Is er een tool om mijn huidige script in te laden en advies krijg van de tool wat er fout is of anders moet?

Kleine stukken code kan je online uitproberen op 3v4l.org voor alle PHP versies.
Voor de meeste code uit de praktijk heb je meer aan 'static code analysis' tools. Als je op internet zoekt kun je al snel een overzicht vinden van wat er ongeveer voor PHP verkrijgbaar is, bijvoorbeeld via https://meh.dev/php-static-analysis-tools .
Gewijzigd op 29/06/2022 10:18:19 door Ad Fundum
 
Ozzie PHP

Ozzie PHP

29/06/2022 16:42:45
Quote Anchor link
Ad Fundum, begrijp me niet verkeerd hoor, maar kun je je "afkeur" of hoe je het ook wil noemen jegens PHP niet gewoon achterwege laten? We zitten hier op een forum voor en (meestal) door PHP-enthousiastelingen. Die steekjes onder water "Concreet betekent dit dat elke nieuwe PHP-versie je code stuk kan maken ... je loopt elke keer achter de feiten aan ... ik hoop voor het verlopen van 7.4 op 28 november 2022 van PHP af te zijn" en opmerkingen als "PHP maakt er helemaal een zootje van" begin ik inmiddels een beetje beu te worden.

Als je het allemaal zo slecht en vervelend vindt, waarom ga je je dan niet volledig op iets anders focussen en laat je de mensen die wel enthousiast zijn over PHP in hun waarde? Je antwoorden zijn nuttig hoor, begrijp me niet verkeerd. Maar die afkeur iedere keer er tussendoor, ik word er inmiddels een beetje ziek van en het begint in negatieve zin op te vallen. Prima dat je PHP niet (meer) tof vindt, maar bederf de pret van een ander dan niet.

Ik kan (en ga) je absoluut niet verbieden om dingen te zeggen, dus als je het wil zeggen ga je gang, maar besef wel dat je daarmee andermans pret bederft. Het is gewoon niet zo heel tof die kritiek iedere keer. Dan vraag ik me oprecht af wat je hier op het forum komt zoeken als je er toch mee wil stoppen.
 
Ward van der Put
Moderator

Ward van der Put

29/06/2022 18:01:26
Quote Anchor link
Ad Fundum is een van de weinigen hier op het forum die beseft dat hij problemen voor had kunnen zijn met unit tests. En überhaupt een van de weinigen die weet wat unit tests zijn...

Alleen gebruikt hij het ontbreken van unit tests om het er maar bij te laten zitten, terwijl je je juist met unit tests op de aankomende breaking changes kunt voorbereiden.

Daarnaast kun je unit tests prima gebruiken om meer Ad Hoc ;-) code te debuggen: schrijf een unit test die een bug reproduceert en fiks daarna de code tot je test weer op groen staat.

Met PHP 8.2 en 9.0 wordt het opnieuw leuk: dan worden dynamic properties verboden, dus kunnen we veel WordPress script kiddies verwachten die "om onverklaarbare redenen" ineens properties in classes missen.

Voor die "onverklaarbare redenen" kun je dan gemakshalve de schuld bij PHP leggen, maar moet je het eerlijkheidshalve bij je eigen gemakzucht zoeken: had nou maar een paar unit tests geschreven die de werking van je eigen code verklaren...
Gewijzigd op 29/06/2022 18:02:35 door Ward van der Put
 
Nanno Koerts

Nanno Koerts

29/06/2022 18:21:04
Quote Anchor link
Ward van der Put op 29/06/2022 18:01:26:
Ad Fundum is een van de weinigen hier op het forum die beseft dat hij problemen voor had kunnen zijn met unit tests. En überhaupt een van de weinigen die weet wat unit tests zijn...

Alleen gebruikt hij het ontbreken van unit tests om het er maar bij te laten zitten, terwijl je je juist met unit tests op de aankomende breaking changes kunt voorbereiden.

Daarnaast kun je unit tests prima gebruiken om meer Ad Hoc ;-) code te debuggen: schrijf een unit test die een bug reproduceert en fiks daarna de code tot je test weer op groen staat.

Met PHP 8.2 en 9.0 wordt het opnieuw leuk: dan worden dynamic properties verboden, dus kunnen we veel WordPress script kiddies verwachten die "om onverklaarbare redenen" ineens properties in classes missen.

Voor die "onverklaarbare redenen" kun je dan gemakshalve de schuld bij PHP leggen, maar moet je het eerlijkheidshalve bij je eigen gemakzucht zoeken: had nou maar een paar unit tests geschreven die de werking van je eigen code verklaren...


Ik ben helaas echt een amateur op het gebied van php maar ik heb toch geprobeerd om een werkende website te bouwen.
De website waar het over gaat heb ik in 2008 gebouwd en in 2015 omgezet naar html5.
Afgelopen half jaar heb ik de website volledig nieuw gebouwd met de geldende 7.* versie. De oude website moest ook nog blijven werken en de error's die had, hadden geen invloed op de algehele werking gelukkig na wat kleine aanpassingen.

Nu is de oude website verleden tijd en wil overstappen naar versie 8 en de website loopt vast. Ondanks dat ik de error afhandeling bovenaan het script heb staan, zie ik bij het openen van de pagina enkel een wit scherm. Ik heb dus echt geen idee wat er fout gaat.

Ik heb nu Visual Studio Code gedownload want daar zit een debug optie in verwerkt, nu moet ik alleen nog Apache installeren omdat hij een error geeft en niet weet wat te doen.

Eigenlijk had ik de hoop dat er een tool beschikbaar is waarin de code kan inladen en advies, veranderingen en fouten terug zie. Dit is eigenlijk de grootste vraag want zoeken in de lijst aan veranderingen overzie ik niet omdat ik maar 4% aan php code ken en hanteer.
 
- Ariën  -
Beheerder

- Ariën -

29/06/2022 18:30:17
Quote Anchor link
Jan R op 28/06/2022 07:05:43:
Misschien een klein beetje moeite doen.
1° hit via google https://www.strato.nl/faq/hosting/logfiles-downloaden/

Heb je dit al gelezen?
 
Nanno Koerts

Nanno Koerts

29/06/2022 18:33:35
Quote Anchor link
- Ariën - op 29/06/2022 18:30:17:
Jan R op 28/06/2022 07:05:43:
Misschien een klein beetje moeite doen.
1° hit via google https://www.strato.nl/faq/hosting/logfiles-downloaden/

Heb je dit al gelezen?


Ja, en na enig zoeken kwam ik het tegen maar de log bestanden zijn leeg of niet te verwerken.
En ik had al enige moeite gedaan maar niet aan gedacht om dat via Google te doen. Heb de gehele website afgestruind van Strato maar kon niks vinden via hun eigen zoekfunctie.
 
- Ariën  -
Beheerder

- Ariën -

29/06/2022 18:38:03
Quote Anchor link
Als de pagina leeg is, is de HTML-broncode dat ook? Of zie je kenmerken van je site?

En wat als je in .htaccess je eigen error_ log defineert? Als deze geen errors aangeven zal er iets anders mis zijn in je script. Dan zul je het probleem moeten isoleren.
Gewijzigd op 29/06/2022 18:38:42 door - Ariën -
 
Nanno Koerts

Nanno Koerts

29/06/2022 18:44:12
Quote Anchor link
- Ariën - op 29/06/2022 18:38:03:
Als de pagina leeg is, is de HTML-broncode dat ook? Of zie je kenmerken van je site?

En wat als je in .htaccess je eigen error_ log defineert? Als deze geen errors aangeven zal er iets anders mis zijn in je script. Dan zul je het probleem moeten isoleren.


Broncode is leeg als ik hem op versie 8 zet. Heb dus ergens een fatal error in mijn code. Maar welke? Met versie 7.4 werkt de website prima.

Ik heb echt geen kennis om een eigen error log te definiëren. Kan/wil je helpen?
 
- Ariën  -
Beheerder

- Ariën -

29/06/2022 20:39:14
Quote Anchor link
Met zoiets? Uiteraard een geldig pad, en schrijfbaar bestand.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
php_flag log_errors On
php_value error_log "/home/username/php_errors.log"


Maar als Strato zegt dat ze een error_log hebben, dan moet je het daar in vinden. Test het eens uit met een opzettelijke error. Zie je niks bij Strato in de error_log dan moet je dit bij hun melden.

Je klikt toch wel op de knop [Toon error log] hè, en je niet in de access_log aan het graven bent?
Gewijzigd op 29/06/2022 20:41:32 door - Ariën -
 
Nanno Koerts

Nanno Koerts

29/06/2022 20:41:16
Quote Anchor link
- Ariën - op 29/06/2022 20:39:14:
Met zoiets? Uiteraard een geldig pad, en schrijfbaar bestand.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
php_flag log_errors On
php_value error_log "/home/username/php_errors.log"


Maar als Strato zegt dat ze een error_log hebben, dan moet je het daar in vinden. Test het eens uit met een opzettelijke error. Zie je niks bij Strato in de error_log dan moet je dit bij hun melden.


Mijn grote dank, ik ga dit eens proberen. Ben benieuwd.
 
- Ariën  -
Beheerder

- Ariën -

29/06/2022 20:42:00
Quote Anchor link
Zie mijn (ninja)edit hierboven ^^
 
Ozzie PHP

Ozzie PHP

29/06/2022 20:45:20
Quote Anchor link
Een heel simpele manier van debuggen is door na een stukje code deze PHP-regel te plaatsten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

exit('*** Hij doet het nog! ***');

?>

Deze regel stopt de code en toont de tekst *** Hij doet het nog! *** op je beeldscherm.

Zet deze regel na bijv. de eerste 20 regels. Zie je de tekst in beeld komen? Prima, dan werkt de code op dat moment nog. Haal de regel nu weg en plaats 'm een stukje verder. Komt de tekst weer in beeld? Prima, het werkt nog steeds tot dat punt. Zo ga je door todat je de tekst niet meer in beeld ziet. Dan zit er dus iets fout in dat laatste stukje. Op deze manier kun je het probleem proberen te isoleren. Als je weet waar het probleem ongeveer zit, kun je je gaan bedenken waar het mis zou kunnen gaan.
 
Ad Fundum

Ad Fundum

30/06/2022 14:08:44
Quote Anchor link
Ozzie PHP op 29/06/2022 16:42:45:
Ad Fundum, begrijp me niet verkeerd hoor, maar kun je je "afkeur" of hoe je het ook wil noemen jegens PHP niet gewoon achterwege laten?

Ik zal er op gaan letten. Het is er min of meer ingeslopen na 21 jaar programmeren in PHP. In die tijd heeft PHP aardig wat veranderingen ondergaan die lang niet allemaal prettig waren.

Enige ergernis is gekomen nadat ik met ontwikkelaars van PHP heb gesproken, die het (op hun manier) verbeteren van PHP (uiteraard) meer aandacht gaven dan het überhaupt op orde hebben van documentatie voor stervelingen als ondergetekende. En dan is zo'n opmerking als over de Backward Incompatible Changes van elke 'minor' release ook een terechte: je loopt ook steeds achter de feiten aan. Ik had liever dat ze alle domme functies (zoals utf8encode()) zouden schrappen en gewoon een enkele (of paar) goede standaarden zouden hebben, en die goed documenteren. Dat zou al helpen voor beginnende PHP-ers. In plaats daarvan werden 'generator'functiess een stuk interessanter gevonden. Persoonlijk vind ik dat weinig dienstbaar, maar niet iedereen is zoals ik (gelukkig).

Mijn afgeven op PHP komt ook omdat het lastig is om toe te geven dat PHP voorziet in een behoefte. Namelijk de behoefte om op relatief eenvoudige wijze veel voor elkaar te krijgen. Ondanks alle kritiek van derden is het ook een vaste taal in de Linux-omgeving. En ik kom er zelf slecht van af, als je de meeste valkuilen kent, werkt het gewoon erg goed. PHP is overal.



Toevoeging op 30/06/2022 14:17:16:

Ward van der Put op 29/06/2022 18:01:26:
Ad Fundum is een van de weinigen hier op het forum die beseft dat hij problemen voor had kunnen zijn met unit tests. En überhaupt een van de weinigen die weet wat unit tests zijn...

Ward, je slaat de spijker op z'n kop. Maar ook hiervoor geldt: ik loop achter de feiten aan. Ik had van meet af aan met unit tests moeten beginnen, geen speld tussen te krijgen. Met Unit tests zou ik veel breaking changes voor kunnen zijn.

En ik zou het hebben gedaan, ware het niet dat de software die ik met PHP heb geschreven onverkoopbaar is, omdat PHP de broncode niet kan compileren naar objectcode. Klanten zouden dan beschikken over de source code, wat ik geen optie vind. Voor de tussenperiode werk ik met SourceGuardian. SaaS was niet voor al mijn klanten een optie, en NEN-7510 certificering lag ook niet meteen voor de hand. Vandaar dat ik ook wel iets anders moest gaan doen dan PHP. Zoals ik eerder heb laten weten ben ik nu heerlijk in Rust bezig. Verklaart ook mijn bias 'doe zoveel mogelijk in de database, niet in PHP', scheelt weer porteren naar een andere taal.

In ieder geval dank voor de positieve inbreng met de aankomende veranderingen in PHP 8.2 en 9.0, het wordt nog wel eens wat!
 
Nanno Koerts

Nanno Koerts

30/06/2022 18:48:01
Quote Anchor link
Arien,

Ik ben al enige stappen verder inmiddels en kom erachter dat het meeste wel draait onder 8.0

Ik begrijp alleen even niet hoe om te gaan met de wijziging van de controle of iets bestaat of niet. De != afhandeling is gewijzigd en werkt niet in php 8.
Nu vraag ik me ook af of ik hier niet beter een function van kan maken, maar daar werk ik nooit mee. Zou je me alsjeblieft willen helpen hiermee?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$controle_ip_in_mandje = mysqli_query($connect_agenda, "SELECT * FROM Mandje where IP='$ip_x'");
$row_x = mysqli_fetch_object($controle_ip_in_mandje);

if ($row_x['IP'] != $ip_x && $row_x['Port'] != $ses_id)


Thanks.
 
- Ariën  -
Beheerder

- Ariën -

30/06/2022 19:09:30
Quote Anchor link
Je gebruikt mysqli_fetch_object, en je behandelt het als een array:
$row_x['IP']

Dit heeft niks te maken met PHP8.
Gewijzigd op 30/06/2022 19:12:29 door - Ariën -
 
Nanno Koerts

Nanno Koerts

30/06/2022 19:13:25
Quote Anchor link
- Ariën - op 30/06/2022 19:09:30:
Je gebruikt mysqli_fetch_object, en je behandelt het als een array:
$row_x['IP']


Oeps, dit had ik nog laten staan na het testen.
Ook als ik het als array neerzet krijg ik een error dat de null afhandeling niet in orde is.
 
- Ariën  -
Beheerder

- Ariën -

30/06/2022 19:15:12
Quote Anchor link
Sla je SQL op in een losse variabele en echo deze eens. Controleer ook $controle_ip_in_mandje of deze niet false is.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.