Bonjour,
Je suis débutant, âgé de 56 ans.
J’ai développé une application web basée sur Symfony 6.3 que je lance en local depuis Windows 10 ou 11 avec WAMP (PHP 8.2).
Parallèlement j’ai créé un Virtual Host qui me permet d’afficher la page admin avec l’URL ‘projet/admin/’.
En local avec WAMP ça fonctionne bien. L’application est conséquente puisqu’elle dispose d’un Dashboard, d’une base de données et d’un certain nombre de formulaire et une gestion des authentifications et rôles. C’est une GMAO.
J’ai créé un compte GitHub et crée mon dépôt
Je souhaite m’entrainer à migrer vers un serveur local.
Pour cela j’ai créé une machine virtuelle basée sur Debian 12 avec VirtualBox.
J’ai installé apache2, Maria dB et PHP (8.2). Le tout à jour
J’ai migré le dépôt de GitHub vers le serveur et crée un fichier Virtual host
J’ai également migré les données vers la base de données. L’opération a réussie avec doctrine :migration :migrate
Sur le serveur de la machine virtuelle, j’ouvre Firefox et j’affiche bien la page d’accueil Symfony (URL=localhost/).
Lorsque je saisi l’URL localhost/admin/ j’ai une page blanche avec le message suivant : NOT FOUND The requested URL was not found on this server.
J’ai réalisé un cache:clear sans succès. Je suis en mode dev dans le fichier .env
Je ne comprends pas ce qui se passe. ‘/admin’ est une route déclarée dans mon Controller.
D’ailleurs aucune autre route ne fonctionne (home, login…)

Pouvez-vous m’aider svp ?

Ce que je veux

Afficher le dashboard avec l'URL localhost/admin sur une machine virtuelle

Ce que j'obtiens

Lorsque je saisi l’URL localhost/admin/ j’ai une page blanche avec le message suivant : NOT FOUND The requested URL was not found on this server.

6 réponses


bonjour lawre,
si la page / s'affiche correctement mais pas une page /admin cela provient certainement que ton serveur web ne redirige pas les urls associées à des fichiers inexistant vers ton point d'entrée.
c'est ton public/.htaccess qui fait cela :

<IfModule mod_rewrite.c>
    # extrait
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

si tu dis qu'en local avec wamp cela fonctionne bien, j'imagine donc que tu as bien ton public/.htaccess mais peut être que sur ta config d'hôte virtuel de ta machine Debian tu n'as pas autorisé apache à lire tes fichiers .htaccess ?

<VirtualHost *:80>
    ServerName <your-domain>.com

    DocumentRoot '/chemin-vers-ton-projet/public'
    <Directory '/chemin-vers-ton-projet/public'>
        Options Indexes FollowSymLinks
+        AllowOverride all
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler 'proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost'
    </FilesMatch>
</VirtualHost>

ce serait une piste ?

lawre
Auteur

Bonjour et merci pour votre réponse

Je pense que cette piste est intéressante même si j'ai du mal à comprendre tout

J'ai bien un .htaccess dans mon /public à côté du index.php. Est-ce à cet emplacement ou plutôt dans le répertoire projet (qui s'appelle également public)?

J'ai bien mon 000-default.conf avec les commandes que vous m'avez transmis? et avec sudo a2ensite public j'ai duppliqué vers sites-enabled.
J'ai redemarré mon serveur apache2

ça ne fonctionne toujous pas!

Je suis connecté en tant que debian (oui c'est pas bien). Le .htaccess est en rw pour debian et en read pour les autres.

Bonsoir lawre

Est-ce à cet emplacement ou plutôt dans le répertoire projet ?
les 2 fonctionnent, apache part du répertoire le plus profond et remonte vers le moins profond voir doc : https://httpd.apache.org/docs/2.2/fr/howto/htaccess.html#when
je vous conseille toutefois de le placer dans le dossier du index.php afin de restreindre sa portée.
on est bon pour les droits de fichier.

pouvez-vous me dire les fichiers présents dans le dossier sites-enabled et m'afficher leur contenu ? également me donner le chemin absolu de votre dossier public (contenant le index.php).

pouvez-vous enfin m'afficher votre config du fichier /etc/apache2/apache2.conf afin d'avoir une vue générale ?

on va voir...

Salut, je déterre peut-être mais tentes un composer require symfony/apche-pack

lawre
Auteur

Bonjour à vous 2.
Tout dabors un grand merci pour le temps passé à tenter de m'aider
En voulant récupérer le contenu des fichiers demandés par Ihapaipai la machine virtuelle a planté sans aucune possibilité connue de récupérer.
Bilan le serveur apache, php et tout l'écosystem est perdu. Faut tout recréer

Je suis passé sur d'autre projet d'apprentissage (Angular) et je referai une nouvelle machine plus tard pour lancer symfony.
Ce contre temps ne me permet pas de répondre à vos demandes.

Encore merci pour vos interventions.
J'aurais peut -être l'occasion de revenir sur ce sujet dès que j'aurais refait la config virtuelle

Bonnes fêtes de fin d'année

Cyril

Salut,

Pour ton problème de "NOT FOUND" sur Debian avec Symfony, ça ressemble à un souci de configuration d'Apache. Vérifie que ton fichier .htaccess est bien configuré et que le mod_rewrite d'Apache est activé. Parfois, le souci vient de là, surtout si ça marche bien sous WAMP. Aussi, assure-toi que ton VirtualHost pointe bien vers le dossier public de Symfony. C'est souvent une source d'erreurs quand on passe d'un environnement local à un serveur. J'espère que ça t'aidera ! Courage, la config serveur, ça peut être un casse-tête au début.

Bonsoir,

Il est recommandé de placer le fichier .htaccess dans le dossier contenant le fichier index.php afin de limiter sa portée. Vous pouvez consulter la documentation à l'adresse suivante : https://httpd.apache.org/docs/2.2/fr/howto/htaccess.html#when time calculator
Pour vérifier les fichiers présents dans le dossier sites-enabled, afficher leur contenu et obtenir le chemin absolu de votre dossier public (contenant le index.php), ainsi que pour afficher la configuration du fichier /etc/apache2/apache2.conf, je vous recommande d'utiliser les commandes suivantes :

  1. Pour vérifier les fichiers présents dans le dossier sites-enabled : ls /etc/apache2/sites-enabled
  2. Pour afficher le contenu des fichiers dans le dossier sites-enabled : cat /etc/apache2/sites-enabled/nom_du_fichier
  3. Pour obtenir le chemin absolu de votre dossier public : realpath /chemin/vers/votre/dossier/public
  4. Pour afficher la configuration du fichier /etc/apache2/apache2.conf : cat /etc/apache2/apache2.conf
    Assurez-vous de disposer des autorisations nécessaires pour accéder à ces fichiers et répertoires.