Je travaille avec des amis sur un site presta, et je fais la migration de PHP 7.0 à 7.1 mais j'ai un petit soucis qui devient vraiment embêtant. J'ai quelques array comprenant plusieurs milliers d'index comme celui ci :
$mon_array['6g54g29b80261d4333655cbadef0bdd'] = 'Ceci est une string';
Sur PHP 7.0 aucun soucis, mais dès que je change de version (7.1, 7.2, 7.3) ça plante, aucun log d'erreur. Mon ami qui est sur Mac n'a aucun soucis. Moi je suis sur Windows, j'ai wamp 3.2.0, PHP 7.1.26, Apache 2.4.37.
Dès que je réduis la taille de l'array ça fonctionne de nouveau. Des idées ?
> aucun log d'erreur Vérifiez : error_reporting = E_ALL display_errors = on display_stratup_errors = on log_errors = on
et que ces valeurs ne sont pas surpassées par vos scripts PHP ; prestashop et un grand coutumier du fait, vu qu'il veut masquer ses erreurs de programmation. . > Dès que je réduis la taille de l'array memory_limit
Merci pour ta réponse Otomatic, j'ai fait un phpinfo tout juste avant l'erreur, et tout tout est bien set comme il faut. J'ai même doublé mon memory_limit et rien n'y fait. C'est bien la première fois que je n'a pas dd'erreurs dans les logs et un problème avec un array...
ini_set(varname, newvalue) dans un script PHP change la valeur de l'option de configuration varname et lui donne celle de newvalue. La valeur de l'option de configuration sera modifiée durant toute l'exécution du script et pour ce script spécifiquement. Elle reprendra sa valeur par défaut dès la fin du script.
Et, d'après mes essais (non exhaustifs) php_info() ne “voit” pas les informations modifiées par ini_set s'il n'est pas effectué après les ini_set() et avant la fin du script.
Vérifiez que les scripts PHP lancés n'incluent pas ini_set().
J'ai volontairement créé des erreurs avant mon array et les logs se remplissent correctement, mais dans le cas de cette erreur spécifiquement, rien du tout. Je n'ai pas trouvé d'ini_set avant qui puissent poser problème. :/
Il peut aussi y avoir une fonction appelée avec @ devant le nom de la fonction, par exemple @function(...), cela masque l'affichage et le log des erreurs. Et un warning en PHP 7.0 est peut-être passé en fatal error en PHP 7.1+. Donc pas vu ni logué.
Voir les différences PHP 7.0 -> 7.1 : [www.php.net]
Voir également si la version actuelle de Prestashop est compatible PHP 7.1+
Oui, tout à fait c'est possible, mais il n'y a pas d'erreur sur PHP 7.1 sur Mac ni même avec Laragon. tout fonctonne correctement, c'est pour ça que je me demande si ce n'est pas WAMP le pb. Je voulais rester sur wamp mais je vais peut etre devoir changer... Merci bcp de ton aide.
Modifie 2 fois. Derniere modification le 19/12/2019 à 15:53 par simonechoukette.