IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

redirection vers dossier public en gardant accessible des dossier de même niveaux


Sujet :

Apache

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2016
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 79
    Points : 65
    Points
    65
    Par défaut redirection vers dossier public en gardant accessible des dossier de même niveaux
    Bonjour,
    Je souhaiterai que mon dossier public qui n est pas la racine de mon site soit celui que apache doit lire mais le niveau au dessus doit aussi être accessible pour les classes les includes et librairies...
    Pouvez vous me dire comment configurer mon virtual host svp ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 379
    Points : 759
    Points
    759
    Par défaut
    Bonjour,

    Pour que ton dossier public soit la racine de ton site, tu dois modifier la directive DocumentRoot dans la configuration de ton vhost Apache.

    Les autres dossiers de ton projet au même niveau que le dossier public ne seront alors pas accessibles via une URL (via le serveur http), ce qui est normal.
    Puisque PHP est exécuté sur le serveur, tu pourras toujours utiliser des include/require sur les fichiers PHP même si ceux-ci ne sont pas dans le dossier public (les include/require sont réalisés via le système de fichier et non via le serveur http).

  3. #3
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2016
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 79
    Points : 65
    Points
    65
    Par défaut
    Bonjour merci pour tes indications elles m'ont été très utiles et tout fonctionne bien, mais je rencontre un petit problème.
    J'ai un dossier que je souhaite rendre inaccessible via URL (http) car ce dossier contient des données personnelles.
    Je pensais donc le mettre au même niveau que public, mais comment y accéder avec php ?
    Ou y a t-il une autre solution ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 435
    Points : 15 807
    Points
    15 807
    Par défaut
    le php peut potentiellement accéder à tous les fichiers sur serveur. les limitations d'accès sont gérées par le système d'exploitation et sont indépendante de la configuration du logiciel serveur http.

  5. #5
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2016
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 79
    Points : 65
    Points
    65
    Par défaut
    Est il possible d'avoir un peu plus de renseignement pour télécharger un fichier en php svp ?

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 435
    Points : 15 807
    Points
    15 807
    Par défaut
    il suffit d'indiquer le chemin relatif ou absolu.
    https://www.php.net/manual/fr/function.require.php

    si vous avez besoin de plus d'aide pour ce point, je vous conseille de créer une nouvelle discussion dans le forum php.

  7. #7
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 379
    Points : 759
    Points
    759
    Par défaut
    Le dossier public est la racine du site web (DocumentRoot), seuls les fichiers de ce dossier sont accessibles via le serveur web (en http/https).
    On y retrouve généralement au moins un fichier index.php (un front controller par exemple), on peut aussi avoir d'autre point d'entrée php si besoin et on y retrouve également les autres ressources publiques de ton site (les fichiers css, js, images, pdf, etc; tout ce qui doit être accesible avec une url via le serveur web).

    Si j'utilise Composer, j'ai alors un dossier vendor au même niveau que le dossier public qui contient les dépendances de mon projet ainsi que l'autoloader de Composer (fichier vendor/autoload.php).
    Dans mon fichier public/index.php accessible via une url, je peux inclure mon autoloader qui se trouve dans le dossier vendor.
    Je peux aussi inclure un fichier php qui serait dans un autre dossier inaccessible par le serveur web (par exemple, un dossier prive à coté du dossier public) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    // fichier public/index.php
     
    require '../vendor/autoload.php';
    require '../prive/MonService.php';
    Pas sûr de bien comprendre ta dernière question concernant le téléchargement d'un fichier en php.

    Si tu veux que certaines ressources soient accessibles mais pas de manière publique, par exemple, proposer le téléchargement d'un fichier pdf uniquement pour les utilisateurs authentifiés sur le site : dans ce cas, il faut placer les ressources dans un dossier inaccessibles par le serveur web (ainsi le fichier pdf n'est pas en accès direct via une url donc un utilisateur non authentifié ne pourra pas le télécharger).
    Puis tu peux utiliser un script php depuis le dossier public pour vérifier si l'utilisateur est authentifié et si c'est le cas, lui proposer le téléchargement avec les fonctions header et readfile.

    Tu peux voir un exemple d'utilisation de readfile pour proposer le téléchargement d'un fichier sur la doc : https://www.php.net/manual/en/function.readfile.php

Discussions similaires

  1. Sous domaine - Redirection vers dossier
    Par bloups0 dans le forum Apache
    Réponses: 5
    Dernier message: 05/07/2017, 20h52
  2. DNS public avec redirection vers des adresses privées
    Par Rhyddid dans le forum Architecture
    Réponses: 6
    Dernier message: 09/07/2014, 15h21
  3. Redirection vers dossier ftp
    Par Klaim dans le forum Apache
    Réponses: 5
    Dernier message: 21/06/2010, 01h20
  4. Réponses: 1
    Dernier message: 29/08/2006, 18h03
  5. Réponses: 4
    Dernier message: 26/07/2006, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo