Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Zend Framework 2 étant disponible en version stable depuis quelques mois maintenant, peut-être souhaitez-vous vous lancer à l'aventure !
Si vous utilisez un hébergemement mutualisé, vous allez devoir, la plupart du temps, faire quelques modifications afin de faire fonctionner l'ensemble.
Voici une liste non exhaustive de différents hébergeurs, n'hésitez surtout pas à en ajouter d'autres !
Pré-requis
La première chose est de vérifier que l'hébergeur supporte AU MINIMUM la version PHP 5.3.3. La compatibilité n'est pas assurée pour les versions inférieurs de la branche PHP 5.3 (donc PHP 5.3.0, 5.3.1 et 5.3.2). Evidemment, plus récente est la version, mieux ce sera !
OVH
Chez OVH, la première étape consiste à activer PHP 5.4, en ajoutant ceci dans votre .htaccess :
SetEnv PHP_VER 5_4
Puis transférez normalement l'ensemble de votre code à la racine du serveur. Si vous suivez les noms de dossier recommandés par Zend Framework 2, vous aurez un dossier nommé "public". Renommez le en "www". Tout devrait fonctionner sans accroche.
1&1 (merci à matthieupetit)
Pour activer PHP 5.4, ajoutez les lignes suivantes dans votre .htaccess :
AddType x-mapp-php6 .php AddHandler x-mapp-php6 .php RewriteBase /
(bien qu'il soit marqué php6, cela active en réalité PHP 5.4).
1&1 (merci à Flobrflo)
Code: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*$ index.php [NC,L]
o2switch (merci à Orkin)
Pour cet hébergeur, le ZF fonctionne directement il suffit de mettre l'ensemble du code dans le dossier www et votre site sera donc accessible à l'url suivante : http://mondomaine/public
Il est possible de déclarer un sous domaine afin de pointer directement sur le dossier public.
Dernière solution mettre l'ensemble du code à la racine de l'hébergement et déplacer le contenu du dossier public dans le dossier www comme pour OVH. Ceci fonctionne aussi en renommant le dossier public en www
Pour activer les extensions et ou configuration php il suffit de mettre un fichier php.ini à la racine de votre hébergement avec vos configurations spécifique. C'est normalement pris à chaud. Si vous avez des soucis, ne surtout pas hésiter à les appeler ils sont super sympa.
Voici un message du support technique qui indique comment changer la version de PHP et comment mettre le fichier php.ini. Le changement de version PHP est récent (octobre 2012)
o2switch a écrit:
Chez o2switch, vous disposez dès à présent de trois versions PHP simultanées.
Par défaut, la dernière version de la branche 5.3.x est installée. Il s'agit de la version générale compatible avec la majorité des outils PHP/SQL.
Deux autres branches PHP sont à présent disponibles : la 5.2.* et la 5.4.*
Pourquoi proposer cela ?
Certains hébergés peuvent avoir des scripts PHP anciens et être contraints de les utiliser.
D'autres sont développeurs et souhaitent être à la pointe des versions PHP. De fait, ils disposeront à présent de la branche 5.4.*
Comment faire pour choisir sa version ?
Si vos outils fonctionnent parfaitement nous déconseillons de changer quelque chose.
Sinon, vous pouvez créer un fichier .htaccess dans le dossier où la version php doit être modifiée.
Puis, indiquez :
Pour Php 5.2.* :
AddType application/x-httpd-php52 .php5 .php4 .php .php3 .php2 .phtml
Pour Php 5.4.* :
AddType application/x-httpd-php54 .php5 .php4 .php .php3 .php2 .phtml
Quelque soit la version concernée il est possible de modifier le fichier de configuration php.ini par simple création d'un fichier portant ce nom à la racine du script php concerné.
Vous indiquerez alors les variables souhaitées à l'intérieur.
Dernière modification par Orkin (15-11-2012 23:57:57)
Hors ligne
Bonjour,
Je suis sur OVH et je met bien à la racine.
Dans le .htaccess (racine) je met bien : SetEnv PHP_VER 5_4
et je renomme bien public en www
mais cela continu a me pointer sur la liste des repertoires.
Et si je choisi www ca fonctionne mais pas les autres pages....
Hors ligne
Salut tu as bien mis ton index.php à la racine de ton hébergement ?
Hors ligne
Orkin a écrit:
Salut tu as bien mis ton index.php à la racine de ton hébergement ?
Bonjour,
Si je le met sur la racine j'ai cela :
Fatal error: Uncaught exception 'RuntimeException' with message 'Unable to load ZF2. Run `php composer.phar install` or define a ZF2_PATH environment variable.' in /homez.42/traiterm/www/init_autoloader.php:48 Stack trace: #0 /homez.42/traiterm/www/index.php(9): require() #1 {main} thrown in /homez.42/traiterm/www/init_autoloader.php on line 48
Hors ligne
Je t'ai dit n'importe quoi le fichier index.php doit bien être dans le dossier public (ou www).
Peux tu nous montrer ton fichier .htaccess ?
Hors ligne
Bonjour.
A la racine :
SetEnv PHP_VER 5_3
dans le répertoire public/ :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /www/index.php
Merci
Hors ligne
Déjà ton fichier n'est pas correct et tu n'as pas suivi ce qui est indiqué. Je vois pas ce que viens faire une règle de réécriture avec www alors que tu es dans le dossier public ...
Donc renomme ton dossier public en www et ensuite met le fichier .htaccess préconisé par le ZendSkeletonApplication ça devrait déjà arranger les choses :
https://github.com/zendframework/ZendSk … /.htaccess
Ensuite je comprend pas pourquoi tu demandes de l'aide pour activer php 5.4 et tu actives php 5.3 à la racine (je suis pas sûr que ça serve vu que la requête arrive directement dans www donc le fichier .htaccess ne doit pas être lu.
Bref une fois que tu as le bon fichier .htaccess tu peux rajouter en début de fichier le ligne pour activer la version de php dont tu as besoin sachant que de mémoire chez OVH php 5.3 est activé par défaut donc si tu souhaites utiliser cette version c'est inutile de le préciser.
Hors ligne
Ecoute c'est ce que j'avais fait au début !
Je viens de retirer le .htaccess de la racine.
Renommer public en www.
Mettre dans www/.htaccess :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Et quand je démarre le site :
je tombe sur l'exploration des répertoires et non dans www/
Sinon je ne viendrais pas ici....
Hors ligne
Et si je vais dans www, j'obtient :
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /homez.42/traiterm/www/www/index.php on line 12
Parse error: syntax error, unexpected T_STRING in /homez.42/traiterm/www/www/index.php on line 12
Et par défaut c'est PHP 4.4.9 d'activé et non PHP 5...
Et donc si je met dans le .htaccess comme ceci :
SetEnv PHP_VER 5_4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Le serveur me retourne :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, postmaster@www.XXX.xx and inform them of the time the error occurred, and anything you might have done that may have caused the error.
C'est un OVH plan : 60gp
EDIT 2 : je pense savoir pourquoi !
On doit mettre ce qui est dans www de ZF2 dans www de OVH et le reste dans / de OVH ? J'essaye.....
Dernière modification par Paul75 (08-01-2013 15:17:39)
Hors ligne
Bon j'ai tous déplacer. Maintenant il va bien directement dans la page d'accueil.
Mais mon .htacces de www/ :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Et j'ai du mettre un htaccess dans / :
SetEnv PHP_VER 5_4
Sinon me restais en PHP 4.4.9.
Et les liens ne fonctionnent pas....
Hors ligne
Et tu peux pas mettre SetEnv PHP_VER 5_4 directement dans le .htaccess du dossier www ?
Pour le reste je vois pas. Si le site s'affiche et qu'en tapant les urls dans la barre d'adresse les bonnes pages s'affichent c'est que le problème des liens viens de chez toi
Hors ligne
Si je met : SetEnv PHP_VER 5_4 en plus du reste, cela me donne une erreur 'Internal Server error'.
Il fonctionne (la page d'accueil) en mettant uniquement SetEnv PHP_VER 5_4 dans le .htaccess
Je signale que le projet fonctionne sur MAMP / LAMP / WAMP en local....
Merci.
Hors ligne
Dans ce cas laisse le .htaccess que je t'ai donné tout à l'heure et laisse donc le php 5.4 dans celui à la racine. Si tu ne mets pas ces instructions tu auras des problèmes puisque c'est le fichier index.php qui est le fichier d'entré donc toutes les requêtes doivent passer par lui et c'est ce fichier qui déclenche tout le moteur MVC du ZF2 qui va dispatcher ta requête au bon endroit.
Pour les liens tu utilises bien l'aide de vue url ?
Hors ligne
Oui les liens je fais comme cela, pour le lien Me contacter, par exemple :
<li class="item contact"><a href="<?php echo $this->basePath();?>/site/contact">Me contacter</a></li>
J'ai l'impression qu'il ne va pas dans le .htaccess de www si j'en met un dans / ? bizarre car je met dans le .htaccess n'importe quoi (dans www) et il fais pas d'erreur...
Dès que je met : RewriteEngine On
Le serveur plante...
Hors ligne
Donc déjà tu n'utilises pas l'aide de vue url tu écris les liens en dur. L'aide de vue url te permet de générer l'url d'un lien en fonction de la route.
Pour le reste je vois pas dsl
Hors ligne
Ecoute, je fais aussi comme cela :
<li class="item contact"><a href="<?php echo $this->url('site', array('action'=>'contact'));?>">Me contacter</a></li>
Mais cela donne la même chose....
Donc cela veux dire que Zend 2 ne fonctionne pas sur les serveurs OVH....
Hors ligne
Pour information, j'ai testé à mettre une petite application avec Zend v1 et pareil, même résultat......
Hors ligne
L'url rewriting ne fonctionne peut être pas sur ce type d'hébergement. Enfin si ça plante lors que tu actives la réécriture d'url avec une erreur 500 c'est que le mod_rewrite n'est pas activé et donc qu'apache ne comprend pas la directive RewriteEngine
Hors ligne
C'est étrange, j'ai déjà mis en place des ZF1 sur OVH sans aucun problème...
Hors ligne
Théocrite a écrit:
C'est étrange, j'ai déjà mis en place des ZF1 sur OVH sans aucun problème...
Ecoute je ne le fais pas exprès. J'ai essayé 4 fois et pareil....
Hors ligne
Renseigne toi voir si le mod_rewrite est bien activé
Hors ligne
On récapitule :
- Ton répertoire public est /www/ et le reste de ton appli ZF est dans /
- Tu as un .htaccess dans /www/ qui contient un SetEnv pour php 5.4 et le rewriting
Il faut que ton htaccess soit dans cet ordre :
Options -Indexes Options -Multiviews Options +FollowSymLinks SetEnv REGISTER_GLOBALS 0 SetEnv PHP_VER 5_4 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Hors ligne
Théocrite a écrit:
On récapitule :
- Ton répertoire public est /www/ et le reste de ton appli ZF est dans /
- Tu as un .htaccess dans /www/ qui contient un SetEnv pour php 5.4 et le rewriting
Il faut que ton htaccess soit dans cet ordre :Code:
Options -Indexes Options -Multiviews Options +FollowSymLinks SetEnv REGISTER_GLOBALS 0 SetEnv PHP_VER 5_4 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Bonjour,
Je met exactement cela dans le htaccess et cela me sort "Internal Server Error".
Merci.
Hors ligne
Essaye d'aller sur les logs d'erreur pour avoir un peu plus de détails : https://logs.ovh.net/.
Hors ligne
Allo ? Tu peux lire les réponses qu'on te donne ?
Orkin a écrit:
Renseigne toi voir si le mod_rewrite est bien activé
S'il n'est pas activé, c'est NORMAL que tu ais une erreur 500 soit "Internal Server Error"
Hors ligne