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 :

[Système] fopen()Permission denied sur Apache


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut [Système] fopen()Permission denied sur Apache
    Bonjour, j'utilise Apache 2 comme serveur, et lorsque je fais
    , j'ai comme erreur "failed to open stream;Permission denied",

    Je crois que c'est une question d'accès mais je ne sais pas comment regler ce problème.

    Cordialement,

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    c'est quoi comme type de fichier com1: et il est placé ou?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut
    Si tu es sous Windows, je pense que tu as pris cette idée (port com) sur php.net :

    http://fr3.php.net/function.fopen

    Alors : (trouvé sur cette page)

    I have found that I can do fopen("COM1:", "r+"); to open the comport in windows. You have to make sure the comport isn't already open or you will get a permission denied.

    I am still playing around with this but you have to somehow flush what you send to the comport if you are trying to communicate realtime with a device.
    Je ne comprends pas super bien le code qui suit (surtout le test elseif($com1), mais il semble important de fixer le mode du port.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    // HOW TO USE PHP TO WRITE TO YOUR SERIAL PORT: TWO METHODS
    $serproxy=true;
    if ($serproxy) {
       // Use this code in conjunction with SERPROXY.EXE
       // (http://www.lspace.nildram.co.uk/freeware.html)
       // which converts a Serial stream to a TCP/IP stream
       $fp = fsockopen ("localhost", 5331, $errno, $errstr, 30);
       if (!$fp) {
           echo "$errstr ($errno)";
       } else {
           $e = chr(27);
           $string  = $e . "A" . $e . "H300";
           $string .= $e . "V100" . $e . "XL1SATO";
           $string .= $e . "Q1" . $e . "Z";
           echo $string;
           fputs ($fp, $string );
           fclose ($fp);
       }
    } elseif ($com1) {
       // Use this code to write directly to the COM1 serial port
       // First, you want to set the mode of the port. You need to set
       // it only once; it will remain the same until you reboot.
       // Note: the backticks on the following line will execute the
       // DOS 'mode' command from within PHP
       `mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
       $fp = fopen ("COM1:", "w+");
       if (!$fp) {
           echo "Uh-oh. Port not opened.";
       } else {
           $string = ... ;
           echo $string;
           fputs ($fp, $string );
           fclose ($fp);
       }
    }
    ?>
    Je ne vois pas quel 'chemin d'accès' pourrait être nécessaire pour le port com sous Windows .

    Si tu es sous Linux, franchement je doute que ce soit la bonne méthode.

    --
    Rom_1

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    COM1 n'est pas un type de fichier mais le port COM1 du PC.Il y a des données qui arrivent sur ce port et j'aimerais les lires.

    Et je crois que c'est une question de permission mais je ne sais pas comment le regler

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    autant pour moi, vu que je n'utilise fopen que pour des fichier, j'ai pas fais le rapprochement avec le port COM1 ... euh ... euh ... je passe

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    est-ce que bien fixer le mode du port veut-dire cela?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut
    est-ce que bien fixer le mode du port veut-dire cela?
    Selon le code donné par ce monsieur, oui. Mais attention, c'est en fait une commande MS-DOS, et j'ignorais cette syntaxe (les backquotes pour exécuter une commande, ` et pas '). A mon avis, utilise exec(), ce sera plus sûr et plus clair.

    Vérifie aussi que la commande marche avec la ligne de commande cmd.exe. Quant à savoir quel est le mode qu'il te faut, seul toi peut le savoir, je suppose que ça dépend de ce avec quoi tu communiques sur ton port COM.

    D'autre part, si tu veux LIRE sur le port, utilise plutôt 'r' que '+w' comme mode d'ouverture. C'est plus facile d'ouvrir un fichier en lecture seule qu'en lecture/écriture (du point de vue des verrous et des permissions).

    Mais franchement, je pense plutôt que c'est l'autre contribution qui explique ton erreur : le port COM1 est déjà ouvert.
    Peut-être existe-t'il un moyen de le fermer dans ce cas ? Tu branches quoi sur ton port série ?

    --
    Rom_1

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    Voici ce que je fais

    D'abord le port COM est activé mais ce n'est pas ouvert.

    Ensuite je lance un programme GPSSimulator qui simule l'envoi de données GPS sur le port COM1, et ensuite j'essaye de lire avec fopen les données qui arrivent sur le port COM1.

    Mais là c'est l'erreur 'Permission denied qui s'affiche'

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    faut-il d'abord désactiver le port COM1? et dans ce cas les données ne pourront pas arriver

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut
    faut-il d'abord désactiver le port COM1? et dans ce cas les données ne pourront pas arriver
    J'en doute, effectivement. Je ne sais pas exactement ce que signifie (dés)activé pour un port COM, mais je doute que ça marche si le port est 'désactivé'. Comment fais-tu pour connaître l'état du port ? (commande DOS, php...)

    Ensuite je lance un programme GPSSimulator qui simule l'envoi de données GPS sur le port COM1, et ensuite j'essaye de lire avec fopen les données qui arrivent sur le port COM1.
    a) essaie d'ouvrir en lecture seule, PAS en écriture (ça donne quoi ?) vu que tu n'écris pas, alors que GPSSimulator le fait, et va donc bloquer le port

    b)je n'en suis pas sur, mais je ne crois pas que la communication sur un port série soit bufferizée (renseigne-toi si tu ne sais pas). Peut-être faut-il que tu lises le port au moment où GPSSimulator écrit dessus, sinon... c'est trop tard.

    Essiae déjà décrire su le com1, vior si ça marche.
    Je ne connais pas très bien la lecture sur port série, mais je crois que la synchronisation est capitale dans ce genre de programmation, et PHP n'ets pas (c'est le moins que l'on puisse dire) un langage taillé pour le temps réel...

    --
    Rom_1

Discussions similaires

  1. Tomcat5.5 : permission denied sur admin.xml
    Par poumpoumpaf dans le forum Réseau
    Réponses: 8
    Dernier message: 31/07/2009, 15h57
  2. Réponses: 1
    Dernier message: 09/06/2009, 12h43
  3. [Système] rmdir Permission denied
    Par gforce dans le forum Langage
    Réponses: 12
    Dernier message: 08/04/2009, 14h05
  4. "Permission denied" sur certains dossiers
    Par mikool19 dans le forum Apache
    Réponses: 3
    Dernier message: 31/10/2006, 13h57
  5. [Système] fopen permission denied
    Par grinder59 dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2006, 13h25

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