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

Langage PHP Discussion :

afficher le contenu d'un fichier en php


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut afficher le contenu d'un fichier en php
    Bonjour,

    je suis dans un contexte où une chose évidente ne fonctionne pas avec Firefox (seulement avec Internet Explorer) : faire un lien html sur un fichier hébergé sur un serveur local (c'est de l'intranet) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="file:\\Wsfr00901\....xls" target="_blank" >
    ....xls</a>
    .
    Avec Firefox, il n'y a pas de message d'erreur comme quoi il ne trouve pas le fichier ; il ne se passe rien quand on clique. Pour contourner ce phénomène, je tente d'ouvrir ce fichier autrement :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="openfile.php" >
    ....xls</a>
    openfile.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo file_get_contents('\\Wsfr00901\....xls'); 
    ?>
    Mon souci est que si le lien envoit bien sur openfile.php, ce fichier n'affiche rien et que si je rajoute un var_dump :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    var_dump(file_get_contents('\\Wsfr00901\....xls'));
    echo file_get_contents('\\Wsfr00901\....xls'); 
    ?>
    il affiche false. Donc file_get_contents ne parvient à accéder au fichier. Y a-t-il un moyen de s'en sortir ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    Je vois que le lien pointe vers un partage Samba. Pour l'ouvrir en php, il faut que le serveur ait les droits nécessaires.

    N'est-il pas possible de monter le répertoire distant sur le serveur de prod pour accéder de manière classique au fichier ?

    Que dit firefox vis à vis du lien en question en l'analysant via la console de développement F12 ?
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Firefox n'autorise plus les accès file://
    http://kb.mozillazine.org/Firefox_:_...Don&#39;t_Work
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Donc d'après le lien de Sabotage, y a rien à faire...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Firefox n'autorise plus les accès file://
    C'est pas si simple. Ce code dans mon navigateur FireFox 52.0.1 fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href=file:///C:/wamp/www/page2.html>go</a>
    Le lien vers lequel nous renvoie sabotage commence par : "For security purposes, Mozilla applications block links to local files (and directories) from remote files.". Donc ce ne sont pas tous les file:// qui ne sont plus autorisés. Et en Intranet (donc purement réseau local) il reste peut-être des possibilités, comme c'est le cas dans mon test. Je ne maîtrise pas assez bien l'anglais pour comprendre les subtilités expliquées dans le lien donné par sabotage.

    Je vous suggère de commencer par :
    - remplacer les antislashes (\) par des slashes (/) : j'ai déjà vu FireFox mal réagir sur de simples liens qui comportaient des antislashes (qui ne sont pas le standard HTML),
    - tester votre file:// à destination d'un fichier sur le disque local, pour vérifier si oui ou non sabotage se trompe,
    - prendre en compte ce que dit Pahcixam, ça a l'air très pertinent.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    j'ai remplacé les antislashes par des slashes.

    J'ai fait un test sur un fichier placé sur le disque local :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="file:///text.html">test</a>
    et
    test.html :
    Le souci est que même IE ne l'affiche pas si je clique sur le lien !

    Sinon, j'ai vu que après le file: tu plaçais 3 slashes (par exemple <a href="file:///text.html">test</a>) au lieu de 2. L'intérêt si je fais ça, c'est que si je survole le lien sous Firefox, le lien qui s'affiche dans la barre dessous est correct ce qui n'était le cas avec seulement 2 slashes.

    Dans la phrase du lien de Sabotage, la suite dit :
    For security purposes, Mozilla applications block links to local files (and directories) from remote files. This includes linking to files on your hard drive
    (je vois pas en quoi c'est des remote files, mais du coup, normal si ça ne marche pas).

    Citation Envoyé par Pahcixam Voir le message
    N'est-il pas possible de monter le répertoire distant sur le serveur de prod pour accéder de manière classique au fichier ?
    Non, car ces fichiers doivent rester disponibles et changer leur emplacement serait très lourd.

    Citation Envoyé par Pahcixam Voir le message
    Que dit firefox vis à vis du lien en question en l'analysant via la console de développement F12 ?
    Moi, non seulement, je ne maîtrise pas non plus l'anglais, mais pas non plus la console de développement, donc une fois lancée avec F12, je ne sais pas aller plus loin...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par contre ta solution alternative reste valable si tu arrives à donner les droits au serveur Apache vers le partage Windows.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Peux-tu préciser un peu ?

    Quelle solution alternative ?

    Sachant que j'ai accès au fichier httpd.conf du serveur, je peux modifier les droits du serveur Apache, mais que faut-il modifier ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas Apache qu'il faut modifier, c'est le partage.
    Comme l'a indiqué Pahcixam, le mieux c'est de créer un montage déjà.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Effectivement, quand je parle de montage, c'est simplement créer un point de montage dans le /etc/fstab afin d'avoir un chemin UNIX standard (ou l'équivalent Windows avec les lecteurs réseaux).

    On gère les accès directement depuis le système et on peut très bien mettre le tout en lecture seule côté serveur.

    On pourrait par exemple monter le dossier dans /media/partage_samba (unix) ou W:\ (Windows).

    De cette manière en donnant les droits au serveur (apache, nginx ?) sur ce dossier, on peut lire les documents avec les fonctions php mentionnées dans le premier poste.
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Désolé, mais je ne maîtrise pas le chinois

    Néanmoins, grâce au premier lien de Jérôme, j'ai pu consulter la console d'erreur de Firefox et le message est :
    Use of getPreventDefault() is deprecated. Use defaultPrevented instead. jquery-1.10.2.js:5375:28
    Security Error: Content at http://localhost:8081/eis2/eisnew/page/index.inc.php may not load or link to file:///Wsfr00901/FR-GRENOBLE/TECHNOPOLE/GENERAL/IT/UNIX/Plan@IP%20-%20T1.xls.
    J'ai aussi essayé de charger l'extension LocalLink mais Nom : locallink.JPG
Affichages : 1251
Taille : 13,3 Ko
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Afin de pouvoir répondre au plus juste, il serait bien de connaitre les caractéristiques du serveur.

    Firefox prévient l'utilisation de lien externe, et je pense qu'à l'avenir les autres navigateur lui emboiteront le pas.

    Il faut simplement monter (c'est à dire lier une ressource samba avec un lecteur pour windows ou un dossier pour les os UNIX-like) le répertoire distant quelque part dans l’arborescence du serveur et lui donner les droits en lecture dessus.

    Si vous voulez des commandes particulières, il faut que l'on en sache plus.
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  14. #14
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 383
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    ne sachant pas quelles informations seraient utiles, voici une copie écran des informations système :

    Nom : confserveur.JPG
Affichages : 1259
Taille : 73,7 Ko
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

Discussions similaires

  1. Afficher le contenu d'un fichier texte avec des balise PHP
    Par bastian06n dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2010, 10h30
  2. [MySQL] Afficher le contenu d'un fichier d'un repertoire avec PHP
    Par barose dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2009, 23h37
  3. Réponses: 2
    Dernier message: 20/11/2006, 13h55
  4. Réponses: 2
    Dernier message: 20/11/2005, 18h54
  5. Réponses: 1
    Dernier message: 12/02/2003, 09h36

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