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 :

Pare feu, Virtual Host ou autre ?


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut Pare feu, Virtual Host ou autre ?
    Bonjour,
    Je débute en programmation php et html.
    J'ai installé un serveur LAMPP sur une distribution légère de linux (puppylinux) et j'ai du mal à diffuser certaines images sur mon nouveau site.
    Je m'explique :
    J'ai une application autonome qui génère une image jpg sur le port 8081 de ma machine.
    Avec mon serveur apache, j'ai une page php qui récupère le jpg du port 8081 pour l'intégrée.
    Sur mon poste, l'mage s'affiche bien.
    Sur un poste distant, je récupère bien la page, mais l'image ne s'affiche pas.

    PS : j'ai testé la récupèration du jpg par le chemin 127.0.0.1:8081 en html et avec la fonction socket en php.
    Les deux solutions me donnent le même résultat.

    Auriez vous une piste ?

    Merci d'avance
    Marc

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Quel est le code HTML (balise <img>) qui doit faire afficher l'image dans ta page ? Forcément, si le code HTML c'est <img src="http://127.0.0.1:8081/..."> ça ne peut marcher que depuis le serveur car http://127.0.0.1:8081/... c'est disponible unique sur et depuis le serveur.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Effectivement, mon code html est :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <img alt="//localhost:8081"> ou <img alt="//127.0.0.1:8081"></td>

    Je comprends donc,....le client cherche une image sur son propre port 8081.

    J'ai essayé également avec la commande suivante :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="maj.php" style="height:10%; ">

    avec pour contenu dans "maj.php" :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php    
        $serveur  = "localhost";
        $fp = fSockOpen ($serveur, 8081, $errno, $errstr);
    if (!$fp) {
        echo "$errstr ($errno)<br>\n";
    } else {
        fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
     while ($str = trim(fgets($fp, 4096)))
        header($str);
        fpassthru($fp);
        fclose($fp);
    } 
    ?>
    Et j'ai exactement le même résultat.
    Je suis pourtant convaincu d'avoir importé ici le contenu de l'image dans §fp avec une restitution par la fonction "fpassthru".

    Je ne comprends donc pas bien....
    Auriez vous une solution simple ?
    Merci
    Marc

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par Alnikopol Voir le message
    Je comprends donc,....le client cherche une image sur son propre port 8081.
    C'est exactement ça.

    Pour le code, je ne sais pas trop. Le trim me plaît moyen : tu récupères un contenu binaire et faire un trim dessus, ça ne doit pas être terrible, je pense. La doc PHP pour fsockopen donne un exemple qui me semble pas mal. Adapté à ton cas, ça donnerait ceci :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
        $serveur  = "localhost";
        $fp = fSockOpen ($serveur, 8081, $errno, $errstr);
    if (!$fp) {
        echo "$errstr ($errno)<br>\n";
    } else {
        fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
        while (!feof($fp))
            echo fread($fp, 128);
        fclose($fp);
    } 
    ?>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Bonjour,

    J'ai testé, et là encore, j'ai le même résultat.
    Sur le poste serveur, j'ai l'image et impossible de l'afficher sur le poste client (???)

    Quelquechose m'échape....

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Il se passe quoi quand tu essaies d'appeler directement l'image ? Dans la barre d'adresse du navigateur, mets http://<serveur>/maj.php.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Bonjour,

    voici le contenu de la page :

    HTTP/1.0 200 OK Server: TotoServeur Connection: close Max-Age: 0 Expires: 0 Cache-Control: no-cache, private Pragma: no-cache Content-Type: multipart/x-mixed-replace; boundary=--BoundaryString --BoundaryString Content-type: image/jpeg Content-Length: 3938 ÿØÿà�JFIF������ÿÛ�C�   (1#%(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egcÿÛ�C//cB8BccccccccccccccccccccccccccccccccccccccccccccccccccÿÀ��ð@"�ÿÄ����������� ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚ ...... et ainsi de suite

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    C'est que des en-têtes HTTP sont envoyés par PHP, alors.

    Que contient exactement ton script maj.php ? Il ne doit contenir que le code que j'ai donné, rien de plus, rien de moi, pas d'espace ou de saut de ligne avant le <?php ou après le ?>.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Bonjour,

    je confirme, j'ai bien tapé ton code.
    je récupère juste les premières lignes d'entête html générées par l'application avec :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    while ($entete = trim(fgets($fp, 4096)));
    ?>

    j'ai donc l'image ... sur le poste serveur à partir de la page http://monsite.com/maj.php

    Sur le poste client, je ne parviens pas à l'obtenir.

    Si je teste la page http://monsite.com/maj.php, le navigateur client indique que la connexion est impossible.

    Je précise que l'image est envoyée par une application sur le port 8081 et que seul le port 80 est ouvert sur ma livebox.
    Serait ce la raison ?

    Merci d'avance pour vos idées

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Plutôt étrange Ton poste distant se trouve sur le même réseau que le serveur ou il y a la box entre les deux ? S'il y a la box, est-ce que le reste site fonctionne correctement (en dehors du pb avec cette image, bien entendu) ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Bonjour,

    Je viens de tester avec un poste client externe au réseau. Le site fonctionne très bien (y compris les requêtes sql).
    Lorsque je cherche la page http;//monsite.com/maj.php, j'obtiens le résultat suivant :

    --BoundaryString Content-type: image/jpeg Content-Length: 7675 ÿØÿàJFIFÿÛC   (1#%(:3=<9387@H\N@DWE78Pm.... et ainsi de suite.

    Par contre, je pense avoir compris d'où celà peut venir.
    L'image envoyée sur le port 8081 est régulièrement renouvelée (de l'ordre d'une image par seconde).

    Je me demande si mon

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    while (!feof($fp))
      echo fread($fp, 128);
    ?>

    .... rencontre un jour la fin du fichier. J'imagine que les images arrivent les unes derrière les autres plus vite qu'elles ne peuvent être lu.

    Je vais donc tester différenment sur le while....

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Bonjour,

    C'était bien ça, le client ne voit jamais la fin de fichier...
    L'image se renouvelle trop rapidement.
    Il y a deux solutions qui fonctionnent :
    - ralentir le renouvellement de l'image sur le port 8081,
    - n'envoyer qu'une seule image par connexion client.

    Je pense qu'il y avait la possibilité de travailler sur le while mais la solution d'image unique me convient.

    Merci beaucoup pour votre aide.

    A bientôt

    Marc

  13. #13
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Essaie un truc : demande au serveur de couper la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fputs ($fp, "GET / HTTP/1.0\r\nConnection: Close\r\n\r\n");
    On ne sait jamais. Je doute que ça marche, mais sait-on !

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Bonjour,

    Ton astuce fonctionne également.
    Cette solution est plus saine et me plais bien. Je vais l'adopter.

    Par contre, j'ai décelé un nouveau problème.

    Tout celà fonctionne bien avec un client firefox.
    Par contre, toujours pas avec Internet exploreur (???)

  15. #15
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Etrange Faudrait installer sur IE un truc du style IEHttpHeaders pour tracer les échanges entre IE et le serveur et espérer comprendre ce qu'il se passe. Sinon, Wireshark mais on commence à rentrer dans du lourd.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Merci beaucoup pour ton aide.

    Je vais continuer à chercher.

    Marc

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/08/2010, 13h58
  2. [apache] [ssl] paramétrage virtual host
    Par Aldo dans le forum Apache
    Réponses: 2
    Dernier message: 14/05/2005, 00h34
  3. [Plugin][PHPEclipse]Les directives VIRTUAL HOSTS (Apache)
    Par MYKERINOS dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/03/2005, 09h35
  4. virtuals hosts apache
    Par kaiser2003 dans le forum Apache
    Réponses: 5
    Dernier message: 01/08/2004, 17h18
  5. [tomcat]comment cree un "Virtual Host" avec tomcat
    Par nouaman dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 04/06/2004, 22h51

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