web-dev-qa-db-fra.com

La route est dans la liste de débogage mais renvoie 404 dans Symfony 4

Ok, je viens d’installer la dernière version de Symfony 4. Exécutez le navigateur après l’installation et un message de bienvenue. Tout bon!

Ensuite, j'ai créé un nouveau contrôleur en utilisant make:controller. J'ai nommé ce contrôleur Client et utilise Annotations, comme avec l'autre contrôleur par défaut. J'ai configuré le routage comme suit:

/**
 * @Route("/client", name="client")
 */
public function index()
{
    // replace this line with your own code!
    return $this->render('@Maker/demoPage.html.twig', [ 'path' => str_replace($this->getParameter('kernel.project_dir').'/', '', __FILE__) ]);
}

J'ai rafraîchi le navigateur et tout bon, pas d'erreurs.

Ensuite, j'ai manuellement saisi le chemin dans le navigateur pour vérifier s'il fonctionne vraiment:

localhost:8000/client

Problème. L'URL retourné standard Apache 404

Not Found
The requested URL /client was not found on this server.

Apache/2.4.18 (Ubuntu) Server at new.staff-fdr.dev Port 80

La route de débogage voit ceci cependant:

-------------------------- -------- -------- ------ ------------------
  Name                       Method   Scheme   Host   Path   

 -------------------------- -------- -------- ------ -----------------
  client                     ANY      ANY      ANY    /client  
  index                      ANY      ANY      ANY    /       
  _twig_error_test           ANY      ANY      ANY    /_error/{code}.
7
Riza

Fichier .htaccess manquant.

composer config extra.symfony.allow-contrib true

composer req symfony/Apache-pack
18
malcolm

J'ai également eu ce problème et voici quelques autres idées si cela ne fonctionne pas pour vous. La première consiste à configurer votre serveur Web comme indiqué ici. Apache optimisé avec mod_php a fonctionné pour moi:

https://symfony.com/doc/master/setup/web_server_configuration.html

Deuxièmement, le mod rewrite n’est pas activé sur mon serveur Web. C'était finalement la solution qui m'a permis de me lever et de partir. Courir:

Sudo a2enmod réécrire

Ensuite 

Service Sudo Apache2 redémarrer

Cela devrait vous faire avancer. 

2
Johnny Wales

Dans mon cas, j'avais simplement oublié de modifier ma configuration vhost du Web vers un dossier public lors de la migration vers symfony flex.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "C:/xampp/htdocs/myproject/web/"
    ServerName dev.myproject.com
    ServerAlias dev.myproject.com
    <Directory "C:/xampp/htdocs/myproject/web/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

À

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "C:/xampp/htdocs/myproject/public/"
    ServerName dev.myproject.com
    ServerAlias dev.myproject.com
    <Directory "C:/xampp/htdocs/myproject/public/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow from all
     </Directory>
</VirtualHost>
0
Tortus