[RESOLU] Mon site ne fonctionne qu'avec SAFARI et aucun autre

Eléphanteau du PHP | 12 Messages

02 déc. 2019, 17:35

Bonjour à tous,

Parmi les miriades de choses que je ne comprends pas il se trouve que mon site fonctionne (très bien même) UNIQUEMENT avec Safari (sur MacOS Mojave). Il ne fonctionne avec autre navigateur. j'ai essayé (en plus de Safari), Chrome, Opera et Firefox. Même comportement.

En fait tout ce qui est HTML s'affiche. Et rien de ce qui est PHP ne s'éxécute.

Il semble que PHP ne soit même pas sollicité. J'ai lu et relu et scruté le php.ini. mais je ne vois pas ce qui bloque !!!!

Si quelqu'un a une idée ...

Mammouth du PHP | 1249 Messages

02 déc. 2019, 19:48

par quelle url avez vous accédé à votre site dans chacun des navigateurs ?

Eléphanteau du PHP | 12 Messages

02 déc. 2019, 20:55

oui c'est vrai que ma question manque de détails

Mon site est strictement en local. Entièrement sous MAMP.
l'URL utilisé est : http://mmi13.local:8888/DVDTHEQUE/DVD-Accueil.php

où mmi13 est le nom de ma machine .
8888 est le port standard MAMP pour Apache
PHP tourne sur le port 8889
DVDTHEQUE est le répertoire directement sous htdocs. Il contient tous mes programmes et tous les CSS
et la page DVD-Accueil.php est la page initiale qui affiche le menu

Si j'utilise localhost c'est la même chose ainsi que l'adresse IP locale 168.192.0.2. Ca ne change rien

L'environnement est le même pour les 4 navigateurs. A savoir MAMP 5.5 avec Apache, mysql 5.6 et PHP 7.3.

En revanche tout fonctionne sous phpMyAdmin avec tous les navigateurs.

Voilà !!

Mammouth du PHP | 1249 Messages

02 déc. 2019, 21:00

quel est le code source généré par un fichier php contenant un script php qui modifie le code html, dans le navigateur où cela fonctionne, et dans un navigateur où cela ne fonctionne pas ?

Eléphanteau du PHP | 12 Messages

02 déc. 2019, 21:44

Si je comprends bien il faudrait que je compare les sources générés (Afficher le code source de la page).

C'est une bonne idée. Je le ferai demain à tête reposée.

Merci beaucoup. Bonne nuit

Eléphanteau du PHP | 12 Messages

03 déc. 2019, 09:45

Bonjour,

Je viens de comparer les sources générés par SAFARI (là où ça fonctionne) et sur CHROME (un des navigateurs où ça ne fonctionne pas)

- Sur SAFARI : je retrouve bien la partie de code PHP générée par la résolution des ECHO

- sur CHROME : rien du tout. Que la partie purement html

D'autre part les 2 essais ne génèrent rien sur les logs. Ni le log d'Apache, ni le log php.
C'est comme si Apache ignorait la partie PHP dans la page. !!!

En fait c'est SAFARI qui se comporte différemment puisque les 3 autres navigateurs sont cohérents entre eux.

Question: est-ce que la déclaration DOCTYPE a une influence sur le comportement ?
J'utilise le DOCTYPE HTML5 <!DOCTYPE html>

Mammouth du PHP | 1249 Messages

03 déc. 2019, 16:53

- sur CHROME : rien du tout. Que la partie purement html
c'est à dire ?
qu'est ce qui est affiché dans la source d'un script qui comprend uniquement :
Bonjour <?php $nom = "henri34"; echo $nom; ?>

Eléphanteau du PHP | 12 Messages

03 déc. 2019, 17:23

Bonjour or1

Je viens de faire l'essai avec chrome et ... ça fonctionne il affiche bien: Bonjour henri34

et le source généré est aussi : Bonjour henri34

Donc chrome communique bien avec php. Ceci est déjà déterminé.
Ca bloque donc autre part mais où ?

Mammouth du PHP | 1249 Messages

03 déc. 2019, 17:29

quel est le code source généré par un fichier php contenant un script php qui modifie le code html, dans le navigateur où cela fonctionne, et dans un navigateur où cela ne fonctionne pas ? avec un copier/coller des parties qui différent.

Eléphanteau du PHP | 12 Messages

03 déc. 2019, 18:01

je viens de faire un essai avec chrome.

J'ai inséré ton petit script :
- juste après la balise <?php => ça fonctionne
- juste après la première instruction : if (isset ($_POST ['Valider'])) { ma séquence } et là ça ne fonctionne pas. Apparemment c'est l'isset qui ne lui plait pas alors que ça marche très bien avec Safari.

Est-ce que ça ne serait pas une histoire d'encodage (charset) et que l'encodage de chrome transmettrait des caractères incompréhensibles pour php ??? simple supposition ???
Safari encode en Uft-8 ainsi que ma page.
Chrome encode en ... je ne sais pas j'ai pas trouvé où se trouve l'option dans les préférences. Idem pour Opera et Firefox

En tous cas j'avance parce que grace à toi je sais que Apache communique bien avec php et que ça bloque sur cet isset.

Je continue à chercher

Eléphanteau du PHP | 12 Messages

03 déc. 2019, 18:23

en continuant de raisonner: si l'isset était incompréhensible pour php il sortirait en erreur avec une page blanche sur chrome et une erreur dans le log. Or là il ne se passe rien. Comme si Apache ne transmettait rien ou comme si php considérait qu'il n'y a aucune instruction pour lui après la balise <?php

Apparemment ce n'est pas une question d'encodage puisque j'ai fait l'essai d'insérer des parenthèses et des crochets dans le "Bonjour (([ henri34 ]))". Et il me les restitue bien.

Eléphanteau du PHP | 12 Messages

Hier, 10:47

EUREKA !!!
En fait mon site fonctionne très bien maintenant avec Chrome ET Safari.

Je faisais simplement une double énorme erreur de logique. J'ai bien posté en "PHP débutant", ce qui se vérifie. :oops:

Le mystère c'est que ça n'aurait pas dû fonctionner avec Safari.

En toute logique l'isset que je croyais fautif ne remplissait jamais la condition mais pour Safari c'était bon et il avait tord. Pas pour les autres navigateurs et ils avaient raison.

merci à or1 qui m'a mis sur la voie avec son test.

Le coté positif c'est que j'ai encore une hénorme marge de progression :roll:

Avatar du membre
Mammouth du PHP | 979 Messages

Hier, 16:28

Bonjour henri34, tu te méprends sur la façon dont fonctionne php. Ce n'est pas le navigateur qui exécute le code php, c'est le serveur qui héberge le script.

Quand tu appelles un script php depuis ton navigateur, le serveur exécute le fichier demandé et en retourne le résultat au navigateur. Il n'y a pas d'histoire de communication entre le navigateur et php. Le navigateur ne fait qu'interpréter le code html et les css pour générer le rendu visuel de la page et exécute les éventuels scripts javascript qui eux s'exécutent côté client.

Concernant le isset l'explication la plus logique est que sur safari tu avais soumis le paramètre "Valider" en post (clic sur un bouton Valider ?) et donc à chaque fois que tu rafraichissais la page, le paramètre était de nouveau soumis alors que sur tes autres navigateurs tu n'avais jamais soumis le paramètre (jamais cliqué le bouton) et donc la condition n'était jamais vraie.
J'édite souvent mon message après avoir répondu pour le corriger où y apporter des informations complémentaires alors n'hésitez pas à y jeter un nouveau coup d'oeil ^^

Eléphanteau du PHP | 12 Messages

Hier, 20:54

Merci Saian pour cette explication très nécessaire. En fait j'ai écrit cette appli il y a quelques années avec une très faible notion de cet environnement. Ce n'était pas mon métier. Elle a fonctionné et répondait à mes besoins jusqu'à ce que je sois bloqué en raison de changements de versions.
J'ai donc décidé de tout refaire.
En relisant mon ancien code je me demande comment ça pouvait marcher !!!

Aujourd'hui comme j'ai du temps (merci la retraite) j'essaye de programmer en comprenant le plus possible ce qu'il se passe.
Et j'en suis encore loin. Mais j'avance.

Merci encore aux intervenants qui m'ont aidé