Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-07-2010 22:44:21

Camber
Nouveau membre
Date d'inscription: 03-07-2010
Messages: 6

[Resolu] Requested url not found

Bonjour,

je sollicite de l'aide parce que malgré que ce sujet ait déjà été abordé ici, je n'ai pas vu de solution fonctionnant pour moi. Je veux bien croire que c'est un problème de réécriture d'URL,mais je vois pas où je me gourre.

Mais j'avoue moins bien me servir d'apache 2 que d'apache 1... et être un vrai débutant avec ce Framework.

Le problème est le suivant : dès que je fais appel à un contrôleur autre que l'index, j'ai par exemple ce message :
The requested URL /Raquette/public/Admin was not found on this server.

j'ai vu des posts disant que le /public n'était pas normal, mais  ils ne m'ont pas aidés plus que ça ... sad

Alors j'utilise :
-> Zend 1.10.3
-> apache 2
-> une distribution linux dérivée d'ubuntu nommée linux Mint . On dira qu'il s'agit d'une Ubuntu.

Et j'ai tout construit avec Zend Tool

J'appelle ma vue de la façon suivante :

Code:

<a href="<?php echo $this->url(array('controller' => 'Admin', 'action' => 'index')); ?>">Administration</a>

Mon .htaccess a connu plusieurs version, mais la version actuelle est celle-ci :

Code:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

J'ai un virtual Host défini dans etc/apache2/sites-enabled nommé Raquette:

Code:

<VirtualHost *:80>
        ServerAdmin webmaster@raquette
        ServerName Raquette
        ServerAlias www.Raquette
        DocumentRoot /www/htdocs/Raquette/
        <Directory /www/htdocs/Raquette/>
                AllowOverride All
                Allow from all
        </Directory>
</VirtualHost>

En ce qui concerne le mode réécriture d'url :

la commande a2enmod rewrite me dit bien :
Module rewrite already enabled

et de fait, dans /etc/apache2/mods-enabled, j'ai bien rewrite.load


je peux vous donner le bootstrap :
index.php

Code:

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

Et le fichier de config : application.ini

Code:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = "Europe/Paris"
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "XHTML1_STRICT"

resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = pass
resources.db.params.dbname = raquette


[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Je rappelle que les actions du contrôleur index fonctionnent.

Merci d'avance. Si vous avez besoin d'autres infos, n'hésitez pas !

Dernière modification par Camber (14-07-2010 16:13:05)

Hors ligne

 

#2 04-07-2010 14:43:09

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [Resolu] Requested url not found

Qui ya t-il dans le fichier

application/Bootstrap.php

Dans le dossier

application/controllers/

As tu bien un fichier AdminController.php ?
Contient-il bien une méthode indexAction{} (ou unnomAction{} ) et dans ton dossier

application/views/scripts

as tu bien un dossier 'admin' ? Contient-il bien un fichier index.dhtml (ou unnom.dhtml) ?

Ton dossier public à t-il bien pour chemin

/public/

c'est à dire est-il à la racine du projet? Le .htaccess est -il bien dans le dossier public?

wink

Hors ligne

 

#3 04-07-2010 15:38:09

Camber
Nouveau membre
Date d'inscription: 03-07-2010
Messages: 6

Re: [Resolu] Requested url not found

Merci pour la réponse.

Le fichier Bootstrap.php a été généré automatiquement et contient :

Code:

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

}

Dans application/controllers,
j'ai un fichier AdminController.php qui contient ceci :

Code:

<?php

class AdminController extends Zend_Controller_Action
{
public function init()
{
  /* Initialize action controller here */
}

public function indexAction()
{
  // action body
  $this->view->setEscape('utf8_encode');
  $this->view->title = "Administration";
  $this->view->headTitle($this->view->title);
}

public function editAction()
{
  // action body

}
}

application/views/scripts contient les 2 fichiers index.phtml et edit.phtml

Et enfin, après revérification, mon dossier /public est bien à la racine du site et il contient le fichier .htaccess dont le contenu figure dans le premier post.

Hors ligne

 

#4 04-07-2010 16:07:45

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [Resolu] Requested url not found

application/views/scripts contient les 2 fichiers index.phtml et edit.phtml

ces deux fichiers doivent être dans un dossier au nom du controller, donc ici 'admin' c'est le cas ou ils sont directement dans 'scripts' ?

Hors ligne

 

#5 04-07-2010 16:11:09

Camber
Nouveau membre
Date d'inscription: 03-07-2010
Messages: 6

Re: [Resolu] Requested url not found

euh oui, pardon, je rectifie, ces 2 fichiers sont dans application/views/scripts/admin/

Hors ligne

 

#6 04-07-2010 16:28:23

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [Resolu] Requested url not found

La franchement je vois pas hmm

Hors ligne

 

#7 05-07-2010 21:48:48

Camber
Nouveau membre
Date d'inscription: 03-07-2010
Messages: 6

Re: [Resolu] Requested url not found

shadypierre a écrit:

La franchement je vois pas hmm

C'est pas grave. Merci pour ton aide.
ça m'a au moins permis de vérifier quelques points. smile

Je vais continuer à chercher mais je sèche aussi sad

Hors ligne

 

#8 11-07-2010 22:20:03

Camber
Nouveau membre
Date d'inscription: 03-07-2010
Messages: 6

Re: [Resolu] Requested url not found

Bonsoir,

juste pour avertir que j'ai trouvé une solution de contournement.

Ce n'était visiblement pas le code ni la structure du projet. Je pense plutôt à un problème avec mon virtualhost.
Il doit y aavoir quelque chose qui m'échappe avec ces virtualhosts avec apache 2.

Bref, je pensais avoir déjà essayé ça mais en insérant

Code:

<Directory /www/htdocs/Raquette>
                AllowOverride All
                Allow from all
</Directory>

dans httpd.conf (qui au départ est un fichier vide inclus dans apache2.conf), ça a fonctionné et j'ai pu poursuivre mon projet.

Néanmoins, j'aimerais autant ne pas mettre ce sujet en résolu ...
Si quelqu'un pouvait m'expliquer ce que j'ai mal fait à ce sujet avant ...

Merci

Hors ligne

 

#9 12-07-2010 23:38:55

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: [Resolu] Requested url not found

Est ce que tu es sur que ton fichier de config "sites-enabled" est bien chargé par le serveur apache? ("Include etc/apache22/extra/sites-enabled" au chemin près )
S'il est chargé alors je ne vois pas ce que tu as fait de mal. S'il n'est pas chargé et que tu as réglé le même répertoire comme page d'accueil du serveur hors hôte virtuel alors le problème était masqué :
- le navigateur a utilisé le DNS pour trouer le serveur
- le serveur retourne la page principale s'il n'a pas d'hote viruel connus (même répertoire donc même page web)
- si le fichier de configuration des hôtes virtuel n'est pas chargé, c'est la configuration du site principal qui est utilisé.

Vu que ça a fonctionné quand tu as changé la configuration du site principal, j'en conclus que t'as du rater le chemin vers ton autre fichier de configuration et que tu t'es retrouvé avec la configuration par défaut pour ce répertoire.

Hors ligne

 

#10 13-07-2010 09:13:13

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Resolu] Requested url not found

Salut,

Je dirais que c'est ton vhost qui n'est pas bon.

Tu peux soit déterminer un ServerName, soit un Alias, et j'ai l'impression que tu mélanges les deux. De plus ton DocumentRoot ne pointe pas sur public.

1ère solution :

Code:

<VirtualHost *:80>
        SetEnv APPLICATION_ENV development
        ServerAdmin webmaster@raquette
        ServerName local.raquette.com        
        DocumentRoot "/www/htdocs/Raquette/public"
        <Directory "/www/htdocs/Raquette/public">
                Options -Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

puis un "sudo /etc/init.d/apache2 force-reload" biensur.

Il faut aussi indiquer la redirection dans ton fichier hosts (/etc/hosts) :
127.0.0.1     local.raquette.com

Tu accèderas donc à ton site par http://local.raquette.com/


2ème solution (Alias) :

Code:

<VirtualHost *:80>
  ServerName  web.local
  ServerAdmin webmaster@raquette

#####
# Raquette
  <Location /raquette>
      SetEnv APPLICATION_ENV development

      Options -Indexes FollowSymLinks MultiViews ExecCGI
      AllowOverride all
      Order allow,deny
      Allow from all
  </Location>
  Alias /raquette "/www/htdocs/Raquette/public"
#####

#####
# Autre site
  <Location /autre-site>
      SetEnv APPLICATION_ENV development

      Options -Indexes FollowSymLinks MultiViews ExecCGI
      AllowOverride all
      Order allow,deny
      Allow from all
  </Location>
  Alias /autre-site "/www/htdocs/autre-site/public"
#####

</VirtualHost>

Et tu accèderas à tes sites via http://web.local/raquette/ et http://web.local/autre-site/

Cette solution est moins valable car le domaine étant le même, les sessions seront partagées entre les sites.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#11 14-07-2010 16:11:32

Camber
Nouveau membre
Date d'inscription: 03-07-2010
Messages: 6

Re: [Resolu] Requested url not found

Bonjour,
Merci de ces réponses

omega2 a écrit:

Est ce que tu es sur que ton fichier de config "sites-enabled" est bien chargé par le serveur apache? ("Include etc/apache22/extra/sites-enabled" au chemin près )

J'avais bien vérifié, il me semble, mais  en principe oui,

apache2.conf a écrit:

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled

omega2 a écrit:

S'il est chargé alors je ne vois pas ce que tu as fait de mal. S'il n'est pas chargé et que tu as réglé le même répertoire comme page d'accueil du serveur hors hôte virtuel alors le problème était masqué :
- le navigateur a utilisé le DNS pour trouer le serveur
- le serveur retourne la page principale s'il n'a pas d'hote viruel connus (même répertoire donc même page web)
- si le fichier de configuration des hôtes virtuel n'est pas chargé, c'est la configuration du site principal qui est utilisé.

Vu que ça a fonctionné quand tu as changé la configuration du site principal, j'en conclus que t'as du rater le chemin vers ton autre fichier de configuration et que tu t'es retrouvé avec la configuration par défaut pour ce répertoire.

C'est possible ...


Delprog a écrit:

Salut,

Je dirais que c'est ton vhost qui n'est pas bon.

Tu peux soit déterminer un ServerName, soit un Alias, et j'ai l'impression que tu mélanges les deux. De plus ton DocumentRoot ne pointe pas sur public.

1ère solution :

Code:

<VirtualHost *:80>
        SetEnv APPLICATION_ENV development
        ServerAdmin webmaster@raquette
        ServerName local.raquette.com        
        DocumentRoot "/www/htdocs/Raquette/public"
        <Directory "/www/htdocs/Raquette/public">
                Options -Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

puis un "sudo /etc/init.d/apache2 force-reload" biensur.

Il faut aussi indiquer la redirection dans ton fichier hosts (/etc/hosts) :
127.0.0.1     local.raquette.com

Tu accèderas donc à ton site par http://local.raquette.com/

Oui, d'accord pour le vhost. Pour le mélange, c'est possible, je pensais avoir fait attention, mais je connais pas suffisament encore, probablement.

Bilan sur la solution 1

En redéfinissant tout propre mon vhost avec ton code ça fonctionne. J'avais, je pense bien renseigné mon /etc/hosts:

Code:

127.0.0.1 Raquette

La seule chose qui posait problème a priori, c'est bien que mon DocumentRoot ne pointait pas sur public.

J'avais pris modèle sur le vhost proposé dans le tutoriel de Rob Allen :
http://akrabat.com/zend-framework-tutorial/
qui est a priori une référence en Zend (j'ai d'ailleurs son bouquin Zend Framework in Action, qui m'a pas l'air mal du tout).
Mais à la relecture du tuto, il indique bien public, j'avais mal lu sad ou alors je l'avais enlevé suite à la lecture dautres exemples de fichiers sur le net, je ne sais plus trop ....

Et du coup, j'abandonne la solution 2 smile

En tout cas, merci beaucoup à vous 2 pour ces éclaircissement qui me permettent d'avoir une définition plus claire. Et à l'avenir, je saurais définir un vhost correctement ^_^

@++
Camber.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages