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?

+0 -0

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 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 :

1
str_replace(['a', 'b'], ['c', 'd'], 'ababqjgfdjhqsababa');

Alors qu'il faut faire (avec cette version de PHP) :

1
2
3
$find = array('a', 'b');
$replace = array('c', 'd');
str_replace($find, $replace, 'ababqjgfdjhqsababa');

Merci quand même à toi Anthony :)

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  ;)

+2 -0

(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)

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