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

Symfony PHP Discussion :

Répertoire externe à Symfony [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut Répertoire externe à Symfony
    Hello les amis,


    j'ai des vidéos que je voudrais mettre à part d'un projet Symfony.(et donc ne pas le mettre dans /web)
    mais je veux pouvoir y accéder à partir de ce projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /monProjetSymfony/....
    /mesVideos/....
    (1). quel technique utiliser ?

    (2). comment à partir de twig accéder au répertoire /mesVideos ?

    (3). comment sécuriser afin que seul l'application Symfony puisse accéder au répertoire /mesVideos



    -------------------------------
    j'ai quelques idées mais je ne sais pas si c'est valable :

    (1) créer un virtualhost "moncheminvideo" dans httpd.conf
    (2) avec l'alias "moncheminvideo" defini dans httpd.conf
    (3) /mesVideos/.htaccess (mais je ne sais pas quoi mettre dedans)



    si vous avez d'autres solutions ou préciser comment faire ci dessus.

  2. #2
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut
    Hello,

    Tu peux mettre ton dossier de vidéo dans un répertoire supérieur à tes sources sf2 et faire un lien symbolique dans Web. Mettre ensuite en place le niveau de sécurité que tu veux via le security.yml (regarde la doc sf2 très complète) et restreindre en plus avec éventuellement un htaccess (cherche "protect folder with htaccess" tu trouveras ton bonheur).

    Bonne journée

  3. #3
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Hello,

    La meilleur façon (enfin pour moi) est d'utiliser file_get_contents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
         **
         * @Route("/{id}/video", name="video_download")
         */
        public function downloadFileAction(Video $video)
        {
            $path = 'PATH vers le fichier video sur le disc';
     
            $response = new Response();
            $response->setContent(file_get_contents($path));
            $response->headers->set(
               'Content-Type',
               'j'ai pas le nom du header excat !'
            );
     
            return $response;
        }
    Pour sécuriser cela peut importe l'emplacement, t'a qu'a ajouter une regle .htaccess pour empecher l'accees web classic à ton video

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #Si le dossier est nommé uploads:
    .....
    RewriteRule ^(uploads/video/$) - [F,L,NC]
    du coups la vidéo n'est accéssible qu'a travers la route sf2

    brief c'est de l'experimentation à toi de tester tous cela et l'adapter à ton vrai besoin,

    bien à vous

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    ok merci bien,.

    je vais étudier cela

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour
    La meilleur façon (enfin pour moi) est d'utiliser file_get_contents
    ou bien d'utiliser les classes de réponses existantes:
    http://symfony.com/doc/current/compo...#serving-files

  6. #6
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par arnooo999 Voir le message
    Bonjour

    ou bien d'utiliser les classes de réponses existantes:
    http://symfony.com/doc/current/compo...#serving-files
    Merci pour l'astuce je ne le conaissait pas

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Par défaut
    Je comprends pas l'intérêt, tu vas faire passer ta vidéo par php juste pour le fun ? tu peux m'expliquer ?

  8. #8
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    disons que j'ai un serveur avec des videos, un autre serveur avec un projet Symfony. c'est ainsi fait ! (sans forcement avoir un interêt à part celui de separer une quantité volumineuse de donnée et un projet Symfony)
    mon projet symfony doit accéder aux vidéos pour bien sur les lire ...

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Par défaut
    Un vhost un alias, y'a pas raison de passer par php .....

  10. #10
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    sur un serveur mutualisé c'est pas possible

  11. #11
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par goabonga Voir le message
    Un vhost un alias, y'a pas raison de passer par php .....
    s'il y'a une logique metier (tester si user dans une base est authorisé à lire le fichier ou non) avant de servir le fichier

    le vhost ou l'alias est un peux limité

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Par défaut
    Dukoid ... vraiment ? ( y'a pas une option créer un sous domaine ).

    phpiste, je m'y attendais, donc oui tu check avant de balancer le fichier, c'est là ou php va te retourner une réponse (style redirect) mais pas le fichier .

    Sur apache, nginx,... tu as forcement de quoi protéger un dossier, et de quoi lire la réponse venant de ton php-fpm ou plus simplement de verifier si un fichier existe ... et y'a plus qu'a appliquer une règle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTP_COOKIE} PHPSESSID=([^;]+) [NC]  
        RewriteCond %{DOCUMENT_ROOT}/auth/access-%1 -f   
        RewriteRule .? - [L]
        RewriteRule .+  /   [R,L]
    </IfModule>
    ligne par ligne
    je get le phpsessid
    je test si un fichier /auth/access-masesssion existe
    si le fichier existe je retourne le fichier demandé
    ou je retourne le client vers /


  13. #13
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par goabonga Voir le message
    c'est là ou php va te retourner une réponse (style redirect) mais pas le fichier .
    Ce n'est pas une redirection et ça ne le ressemble pas,

    On lit le fichier avec un file_get_contents et on le serve avec un header spécifique

    la réponse http y'a pas seulement du text/html y'a aussi une très grande veriété de mymeType qu'on pourrait généré et ça tu le conais bien je pense

    enfin en chengeant le Content-type tu peux changer le type de la réponse et le client (ici le browser) peut se comporter differement

    enfin ça sera transparent pour ce dernier !

    Un use case fréquent:

    j'ai actuelement une application qui permet à des utilisateurs de s'abbonner à des magazines
    et qui permet aussi à des auditeurs d'uploader leurs magazines.

    en gros une api et une liseuse js.

    l'url web pour accéder à une magazine est de la forme (le dossier physique est bien sous web/uploads/pdf/):

    www.monsite.com/uploads/pdf/l-equipe-1324765.pdf

    or l'auditeur ne veux pas que son fichier sera accéssible par un non abonnée du coups j'ai mis en place une api avec une couche de sécurité OAUTH2

    dans chaque appel à la route le firewall teste la validité du token et refuse/authorise l'accèes à l'url, en plus je fais un traitement supplémentaire dans l'action pour tester si l'abonnée est belle et bien abonnée à la magazine en question.

    donc l'url est de la forme

    api.monsite.com/publication/l-equipe?access_token=blablabla

    dis moi maintenant comment tu peux faire cela avec seulement une config serveur ?

    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tomcat 6, War, et répertoire externe
    Par Pedro4 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/06/2013, 23h39
  2. [PHP 5.3] Télécharger un fichier situé dans une répertoire externe
    Par mamax29 dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2011, 12h12
  3. GWT alias pour un répertoire externe
    Par rgomes dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 02/03/2009, 12h27
  4. Configuration répertoire externe
    Par sebys dans le forum Apache
    Réponses: 17
    Dernier message: 28/05/2008, 18h38
  5. Réponses: 8
    Dernier message: 19/01/2005, 16h17

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