include bloquant
ça marche en local, mais pas en ligne
Le problème exposé dans ce sujet a été résolu.
Bonjour à tous,
je viens vers vous en dépit de solutions… Je prend toutes les suggestions/aides que vous pourrez m'apporter
Je suis en train de faire de la maintenance sur un site web. J'ai changé deux/trois fichiers, et tout marche très bien en local. Mais une fois en ligne j'ai quelques fichiers php qui ne marchent plus, ces fichiers arrêtent leur exécution lors d'un include.
Voilà ce que je sais :
- Cela ne vient pas de la fonction "include", je l'utilise juste avant sans que ça bloque (j'arrive à faire un "echo" après ce premier "include")
- Cela ne vient pas du fichier inclut car quand je fais un "echo" en première ligne du fichier inclus, je n'ai rien qui s'affiche
- Le fichier se bloque bien au niveau de cette "include" car quand je met un echo avant, il s'affiche, mais quand je le met après, plus rien.
- Le chemin vers mon fichier est bon, puisqu'il marche en local (et que c'est un chemin relatif).
- Les dossiers sont en 755 et les fichiers en 644.
Des idées?
Bonjour,
J'ai eu le même problème il y a quelques temps.
Vérifie bien que le nom de tes fichiers das ton Includes sont EXACTEMENT identique.
Pour ma part j'avais des nom de script en Maj, avec des includes en minuscules.
Et bien en Local pas de soucis, mais côtés serveur ça ne passe plus
Voila voila
Merci Anthony, je me suis déjà fait avoir plusieurs fois au début, mais maintenant j'y pense systématiquement. Mon fichier et mes dossiers sont tous en minuscules. Par contre il y a un underscore "_" dans le nom de mon fichier que j’inclue, vous pensez que cela peut venir de là?
Je viens de tester sur serveur les includes avec des underscores et ils fonctionnent.
Ce-ci dit copie un bout de ton code pour qu'on y jette un oeuil
Je viens de trouver d'où cela venait. C'est juste que l'hébergeur de mon client est en version 5.3 de PHP et que certains bouts de code ne s’interprètent pas correctement.
Le problème venait de la fonction "str_replace()". Je lui passait directement deux tableaux en paramètres, alors qu'il est nécessaire de passer par des variables pour mettre des tableaux en paramètres avec cette version de PHP.
En gros je faisait :
| str_replace(['a', 'b'], ['c', 'd'], 'ababqjgfdjhqsababa');
|
Alors qu'il faut faire (avec cette version de PHP) :
| $find = array('a', 'b');
$replace = array('c', 'd');
str_replace($find, $replace, 'ababqjgfdjhqsababa');
|
Merci quand même à toi Anthony
Ya pas de quoi
Juste parce que je passe par là : la syntaxe […]
pour déclarer les tableaux n'est disponible que depuis une version relativement récente de PHP (il me semble que c'est la 5.5, à confirmer), qui n'est visiblement pas installée sur le serveur. Ce n'est donc pas le souci de ce que les tableaux soient définis dans l'appel à la fonction, mais la manière de les définir. Tu aurais tout aussi bien pu corriger en mettant str_replace(array('a', 'b'), array('c', 'd'), 'ababqjgfdjhqsababa')
, la manière certes "verbeuse" mais nettement plus portable de faire à l'heure actuelle
(il me semble que c'est la 5.5, à confirmer)
5.4
PHP 5.4.0 apporte un large éventail de nouvelles fonctionnalités.
[…]
La syntaxe courte des tableaux a été introduite, exemple : $a = [1, 2, 3, 4]; ou $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];.
[…]
mais nettement plus portable de faire à l'heure actuelle
Portabilité relative sachant que la 5.4 vient d'être totalement abandonnée (= on n'est plus censé trouver des versions < 5.5)
Merci à vous deux pour ces précisions
Je m'en étais bien rendu compte, par la suite, pour le reste de mon code. C'est assez gênant pour coder, car j'ai pris l'habitude d'utiliser la syntaxe "[]", mais je n'ai pas le choix du serveur…
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte