WampServer

Apache, PHP, MySQL on Windows 

 
  • Accueil forum
  • Retour à WampServer
  • presentation
  • Download
  • Addons
  • Formations
  • Alter Way

 
Voir le sujet: Précédent•Suivant
Aller à : Liste des Forums•Liste des messages•Nouvelle discussion•Recherche•Connexion•Imprimer la vue
Permissivité de php 8.2
Envoyé par: moimp (---.subs.proxad.net)
Date: 06 June 2024 à 14:21

Bonjour,
A plusieurs reprises, j'ai constaté qu'avec la même version PHP sur Wampserver et en ligne chez Ionos, les sites locaux sur Wampserver était plus permissifs que les sites en ligne. (actuellement 8.2)
C'est gênant car les problèmes apparaissent à la mise en ligne au lieu d'apparaître et d'être corrigés en cours de développement.

C'est en particulier le cas de la casse des noms de classes (exemple: maclasse au lieu de Maclasse)
Autre cas:
Lorsqu'une variable n'est pas définie, elle est acceptée comme vide par la version PHP de Wampserver:
if($errors)
Par contre, en ligne il est nécessaire d'écrire:
if( !empty($errors) )
pour éviter une erreur.

Je pense qu'il faudrait rendre les versions PHP de Wampserver moins permissives.

Options: Répondre•Citer ce Message
Re: Permissivité de php 8.2
Envoyé par: Otomatic (Modérateur)
Date: 06 June 2024 à 15:27

Hi,

Toutes les versions de PHP de Wampserver sont telles qu'elles sont fournies par PHP.

La sensibilité à la casse des noms de fichier ou de classe dépend du système sur lequel tourne ledit PHP :
- Sous Windows insensibilité à la casse
- Sous Unix sensibilité à la casse

Quel que soit le système d'exploitation, le nom d'une variable est sensible à la casse.

Les variables non initialisées ont une valeur par défaut selon leur type - false pour les booléens, zéro pour les entiers et les réels, chaîne vide pour les chaînes de caractères (comme utilisée avec echo) ou un tableau vide pour les tableaux.

Pour une variable non initialisée, if($errors) retournera false mais il y aura aussi un Warning.
PHP Warning: Undefined variable $errors in E:\wamp64\scripts\test.php on line 9

Le fait qu'il y ait une différence avec Ionos vient du fait que la gestion des erreurs n'est pas la même :
Avec Wampserver, c'est :
error_reporting = E_ALL (Show all errors, warnings and notices including coding standards.)
et, chez Ionos, c'est sans doute :
error_reporting = E_ALL & ~E_NOTICE (Show all errors, except for notices)

Pour une variable non initialisée, if(!empty($errors)) retournera false mais il n'y aura pas de Warning.
empty() : Détermine si une variable est considérée comme vide. Une variable est considérée comme vide si elle n'existe pas, ou si sa valeur équivaut à false. La fonction empty() ne génère pas d'alerte si la variable n'existe pas.

---------------------------------------------------------------
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons

Options: Répondre•Citer ce Message
Re: Permissivité de php 8.2
Envoyé par: Otomatic (Modérateur)
Date: 07 June 2024 à 08:43

Bonjour,

J'ajouterais que if(!empty($errors)) retournera false si la variable n'est pas initialisée, mais aussi si la variable est initialisée comme suit :

$errors = false;
ou
$errors = "";
ou
$errors = 0;
ou
errors = array();

Pour voir si une variable est initialisée ET différente de null, c'est if(isset($errors))

---------------------------------------------------------------
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons

Options: Répondre•Citer ce Message
Re: Permissivité de php 8.2
Envoyé par: moimp (---.subs.proxad.net)
Date: 07 June 2024 à 17:15

Merci pour toutes ces explications.
Je m'explique mieux les différences dues au système.

Options: Répondre•Citer ce Message


Aller à : Liste des Forums•Liste des messages•Recherche•Connexion
Désolé, seuls les utilisateurs connectés peuvent envoyer des messages dans ce forum.
Cliquer ici pour se connecter

design by jidePowered by Alter Way get firefoxget PHP