Bonsoir tout le monde,
j'ai un problème bien étrange avec CakePHP, même avec la version brute de dézippage, je m'explique.
J'ai téléchargé la dernière version de CakePHP 2.4.7, uploadé le tout sur le ftp et configuré (core, database, etc)
Sur un PC/MAC (3 PCs différents) avec Safari/Chrome aucun problème tout fonctionne ( En ligne et En local )
Sur un mobile Android aucun problème non plus
Sur un device iOS (4 devices différents, 2 iphones et 2 ipads) ca ne marche pas en ligne ( iphone & ipad ) mais ca marche parfaitement en local ( iphone & ipad )

Mon hébergeur est un OVH Mutualisé Perso.
En local j'utilise MAMP 3.0.4

Comme vous le voyez sur un device iOS il semble y avoir un problème d'url rewriting sur le site en ligne. Donc soit c'est à cause des device Apple quelqu'un a t'il déja rencontré se problème ? Ou ca vient de l'hébergeur mutualisé OVH Perso ? Ou ca vient de CakePHP...
Je ne pense pas que ca vienne de moi, car à part changé les clés et mettre les bonnes infos pour la bdd et uploadé tout le dossier je n'ai rien fait.

J'attends vos commentaires, questions et réponses à mon problème ^^

21 réponses


djtec
Réponse acceptée

Si désolé j'ai bien SetEnv PHP_VER 5_3 je regardais pas le bon htaccess.

Voila le contenu de mes htaccess.

www/.htaccess

SetEnv PHP_VER 5_3
RewriteBase /
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ app/webroot/ [L]
   RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

www/app/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ webroot/ [L]
    RewriteRule (.*) webroot/$1 [L]
</IfModule>

www/app/webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
alexandreg
Auteur
Réponse acceptée

C'est incroyable ! Ca marche !!!
Les seules différences sont :
www/.htaccess :

SetEnv PHP_VER 5_3 
RewriteBase /

et webroot/ .htacces (le QSA) :

RewriteRule ^(.*)$ index.php [QSA,L]

Et je viens d'essayer en enlevant chaque différence une par une et celle qui fait que ca marche est :

SetEnv PHP_VER 5_3

en ayant désactiver le .ovhconfig !
Donc la config PHP de ovh par leur fichier pose un problème !

Ouf, me voila grandement soulagé, merci beaucoup à vous deux !

Bonjour,

Alors très clairement non, c'est relativement impossible d'ailleurs. Quelque soit le navigateur, à moins que tu aies indiqué des restrictions dans ton .htaccess, Apache traitera toutes les requêtes de la même façon.

L'url rewritting est quelque chose qui est géré côté serveur, et sera donc traité indifféremment quelque soit le client.

Cela dit iOS nous cache parfois certaine chose. Peux-tu tester avec Chrome sur iOS et nous indiquer si ça fonctionne ou non ?

Si cela persiste, je t'invite à active le Rewrite Log dans tes .htaccess (celui à la racine, celui qui est dans webroot aussi).
Ceci te permettra d'avoir une trace des appels qui génère des erreurs et nous donnera plus d'éléments pour t'aiguiller sur une piste.

Merci pour la réponse rapide.
J'ai testé sur Chrome iOS ca fonctionne très bien, y compris sur Opéra iOS. Le problème est donc cantonné à safari iOS...
Pour le RewriteLog j'ai que des "Internal Server Error", peut importe sur lequel des .htaccess je mets "RewriteLog /homez.585/SITE/www/mod_rewrite.log" (Il faut bien mettre le chemin absolu ?) J'ai peur qu'on ne puisse pas le mettre en place sur un serveur mutualisé.

RewriteLog est une commande Apache classique est valide, aucune raison que ça ne fonctionne pas sur un mutu.
Effectivement, il faut mettre le chemin absolu (ou bien mettre un pipe qui va rediriger ailleurs).

Par contre, si tu veux qu'on puisse savoir ce qui cloche, il faut que chaque htaccess écrive ses logs dans un fichier différent.

Mais à mon avis, vu l'erreur affichée sur la page de Cake, tu auras un simple "The ressource /webroot/css/... was not found on the server" ou un truc du genre. Ce qui finalement ne nous aidera pas vraiment.

Je t'avoue qu'un problème de htaccess uniquement avec tel ou tel client, c'est assez inédit.
Je continue de me creuser la tête !

Bon je tourne en rond, en carré, la forme que vous voulez...

l'url rewriting fonctionne bien sur le dossier /app/webroot/img, car on a le logo "cakephp power" tout en bas de la page que ca soit sur iphone et ipad.

Sur Mac et PC (safari & chrome) ca fonctionne toujours bien, sur les Chrome iOS toujours aucun problème et sur Safari iOS je n'ai plus l'erreur "url rewriting" de cake php mais pour autant je n'ai toujours pas de charger...

J'ai connecter l'ipad au mac et lancé le mode développeur pour inspecter ios safari, comme on peut le voir sur les screens ( dev timeleine, dev img , dev css), le html est chargé, l'image gif est aussi chargée par contre le css mouline pendant 5sec et il apparait vide dans safari ios...

Peut on envisager une condition rewrite juste sur les ios safari : " RewriteCond %{HTTP_USER_AGENT} "iPhone|iPad" [NC] " ?

Si quelqu'un à un perso ovh et un cakephp installé je veux bien testé sur un safari ios pour voir si c'est juste le mine qui ne fonctionne pas...

Moi j'ai un site CakePhp et sous ovh perso et il fonctionne très bien sous safari ios

Bonsoir djtec, peux tu me fournir une url pour que je puisse tester sur mes idevices?
Comment as tu installer CakePHP ? quelle version ? .ovhconfig ?
Puis je t'envoyer mon dossier app pour que tu le testes afin de voir si c'est du à mon hébergement ou autre ?

Petit truc qui me vient en passant : as-tu bien défini SetEnv PHP_VER 5_4 dans ton .htaccess ?

Le problème pourrait venir de là, par contre ça n'explique pas le fait que ce soit uniquement sur iOS que ça foire, mais c'est déjà une piste dans la mesure où j'ai connu pas mal de soucis dus aux versions de PHP chez OVH.

Non je n'ai pas géré la version de PHP dans le .htaccess car OVH conseil de le faire dans un fichier .ovhconfig. J'ai donc mis ces 4 lignes avec une version PHP à 5.5

Si vous avez un iDevice entre les mains je vous invite à tester lien vers le site à me dire si le problème est le même chez vous.

@Pakito : J'ai eu une réponse de la part du support OVH sur le RewriteLog : " le rewritelog n'est pas possible sur un hébergement mutualisé car il est nécessaire d'avoir accès a la configuration d'apache ce qui n'est pas possible sur un hébergement mutualisé. "

Je viens de tester sur un iDevice, et effectivement, le CSS ne charge pas.

Par contre, j'ai pu constater sur mon ordi que ton css est apparemment dans /img/text.css.
Pourrait-on avoir le code du <head> de ton default.ctp ? Parce que j'ai comme un gros doute là.

Comme je l'ai écrit un plus haut je l'ai déplacé volontairement pour le test et mis un lien en dur qui point sur ce nouveau css. Mais je peux le remettre si tu veux faire le test du CakePHP par défaut.
Le head du default.ctp :

<head>
    <?php echo $this->Html->charset(); ?>
    <title>
        <?php echo $cakeDescription ?>:
        <?php echo $title_for_layout; ?>
    </title>
    <?php
        echo $this->Html->meta('icon');
        //echo $this->Html->css('cake.generic');
        echo $this->Html->css('test');
        echo $this->fetch('meta');
        echo $this->fetch('css');
        echo $this->fetch('script');
    ?>
</head>

La seule chose qui différencie mon fichier .css de la version dézippée de cakephp 2.4.7 c'est le commentaire sur le Html->css et son remplacement par mon lien en dur.

Tu peux remettre le CSS generic ? Enfin décommenter la ligne ?

Voici le lien http://the-cook-chef.com/

CakePhp 2.3.5

Je n'ai rien configuré j'ai mit cakephp et hop ça à marché

J'ai pas rajouté de ligne dans aucun htaccess ni de fichier .ovhconfig

@Pakito : J'ai décommenté " $this->Html->css('cake.generic'); "
@djtec : Tu as raison, ça marche parfaitement ( as tu quelques 'lags' avec le chargement du site de temps à autre avec ton OVH Perso, car je l'ai constater sur le mien à plusieurs reprises...).
De quand date ton Offre Perso ? La mienne date de Septembre 2013 sur le Cluster015.OVH, car si je ne mets pas de .ovhconfig j'ai une erreur php sur le lib/bootstrap.php

Parse error: syntax error, unexpected '=', expecting '(' in /homez.585/SITE/www/lib/Cake/bootstrap.php on line 173

Avril 2013 pour moi et les lags viennent surment car je n'ai pas activé le cache donc je vais voir en mettant bientôt le cache

Effectivement, sur Safari sur un iDevice, on ne choppe pas le CSS et ça mouline un certain temps.
En revanche sur Chrome niquel.

Je n'ai jamais rencontré ce problème, ni sur OVH ni ailleurs.
Donc là j'avoue que je ne l'explique pas.

Tente de repasser à PHP 5.3 sur OVH, les versions supérieures n'étant pas forcément au point sur les mutualisés. Enfin dans le doute, vu que tu n'as pas accès aux binaires, essaie de repasser sur la 5.3, ça pourrait éventuellement résoudre le truc.

Mais sinon, je vois pas du tout.

@djtec : Pour ne pas avoir de .ovhconfig tu as du mettre SetEnv PHP_VER 5_4 dans ton/tes .htaccess ?
@Pakito : J'ai déja essayé les 3 versions de PHP disponibles (5.3, 5.4 et 5.5 aucun changement...)

Bon... Ca ne sent pas bon du tout pour moi! Un autre hébergeur qui ne pose pas de soucis avec CakePHP autre que OVH à me conseiller ?

Dans mon .htaccess qui est dans /webroot, j'ai simplement ça moi :

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Essaye avec mes htaccess et tu verra si ca change

Et ben voilà ça marche enfin. :)