Portöffnung mit Rechte-Problemen

Alles, was PHP betrifft, kann hier besprochen werden.

Portöffnung mit Rechte-Problemen

Postby EvilBolzen » 09. June 2008 09:41

Ich habe zuvor geguckt, ob es im Forum schon Lösungen für das Problem Portöffnung/Rechte gibt und bin dazu nicht fündig geworden.
Kurze Problemschilderung:
Ich soll von einem Gerät über den seriellen Port Daten Auslesen. Hierzu habe ich ein php-Skript geschrieben welches den Port öffnen soll, das Lesecommando senden soll, und dann einen kompletten Antwortstring empfangen soll. Doch jeweil beim öffnen der Ports kriege ich die Fehlermeldung "Permission denied" aufn Schirm. Ich verwende die aktuelle Version von XAMPP-Lite, und irgendwie versteh ich das nicht so recht wie das mit den Rechten zusammenhängt. Wäre nett wenn mir da einer helfen könnte.
Ich hab hier mal meinen Quelltext, Stellungsfehler kann ich eigentlich ausschließen da ich alle anderen Fehler ausgemerzt habe bis dieses Rechte-Problem auftrat:

Code: Select all
<HTML>
      <HEAD>
            <TITLE>Oxi3000</TITLE>
            <META NAME="Author" CONTENT="Für Forum gelöscht">
      </HEAD>

      <BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#0000FF ALINK=#FF0000 VLINK=#000080>
      <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post">
           
      <?php
       
        $versteckt = $_POST["versteckt"];
        echo "Versteckte Variable.$versteckt <br>";
        if ($versteckt==1)
        {
         
          function rs232init($com,$bautrate)
          {
            `mode COM1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
          }
          function senden($comport,$zeichen)
          {
            echo "<br> comport:";
            echo $comport;
            $fp=fopen("\\.\com1", "w+");
            if (!$fp)
            {
              echo "Port zum Daten-Transfer, speziell schreiben,kann nicht ge&ouml;ffnet werden";
            }
            else
            {
              fputs($fp,$zeichen);
              fclose($fp);
            }
           
            function lesen($comport2,$sekunden)
            {
              $buffer="";
              echo "<br> comport2:";
              echo $comport2;
              $fp2=fopen("$comport2", "r+");
              if(!$fp2)
              {
                echo "Port kann zum lesen nicht ge&ouml;ffnet werden";
              }
              else
              {
                sleep($sekunden);
                $buffer .=fgets($fp2,4096);
              }
            }
          }   
          rs232init("com1","9600");
          senden("com1", "CCON");
          $lese=lesen("com1","2");
          echo "<br>Das Ergebnis";
          echo $lese;
        }
    ?>
     

      <br /><input type="hidden" name="versteckt" value="1" />
      <input type="submit" name="submit" value="Absenden" />
      <a href="index.html"> I N D E X </a>
      </BODY>
</HTML>


Abschließend sei noch bemerkt, der Befehl CCON soll den aktuellen Messwert vom Gerät anfordern.
Wäre sehr nett wenn jemand dafür eine Lösung finde könnte, am besten ohne dass ich bei Windows was ändern muss (fremder Rechner).

Mfg EvilBolzen

PS: Sry wegen der Formatierung, aber geht hier im Forum nicht anders.
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby Wiedmann » 09. June 2008 10:03

Doch jeweil beim öffnen der Ports kriege ich die Fehlermeldung "Permission denied" aufn Schirm.

Die Meldung sieht im Orginal wie aus?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby EvilBolzen » 09. June 2008 14:05

Warning: fopen(\.\com1) [function.fopen]: failed to open stream: No such file or directory in K:\xampplite\htdocs\Projekt Oxi 3000\einzelwerterfassung.php on line 25


Warning: fopen(com1) [function.fopen]: failed to open stream: No such file or directory in K:\xampplite\htdocs\Projekt Oxi 3000\einzelwerterfassung.php on line 41

Hab verschiedene Schreibweisen benutzt um einen Fehler daran auszuschließen.

PS: Eure Bordzeit passt nicht, die zeigt Winterzeit an ;) seh ich grad daher erwähn ich das mal am Rande
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby Wiedmann » 09. June 2008 14:26

Warning: fopen(\.\com1) [function.fopen]: failed to open stream:

Der nennt sich unter Windows normal einfach z.B. 'COM1'. Über das DOS-Kommando "mode" dann noch die seriellen Parameter einstellen und dafür sorgen, dass der Port nicht schon von einem anderen Programm geöffnet ist.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby EvilBolzen » 09. June 2008 16:15

Wiedmann wrote:
Warning: fopen(\.\com1) [function.fopen]: failed to open stream:

Der nennt sich unter Windows normal einfach z.B. 'COM1'. Über das DOS-Kommando "mode" dann noch die seriellen Parameter einstellen und dafür sorgen, dass der Port nicht schon von einem anderen Programm geöffnet ist.


Ich habe das ja einmal normal COM1 genannt, wollte halt nur testen ob das auch anders geht. Und mit MODE stelle ich ja die Portparameter ein, nur bleiben dann diese beiden Fehlermeldungen bestehen. auch wenn ich aus dem \.\com1 einfach nur com1 mache
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby Wiedmann » 09. June 2008 17:25

nur bleiben dann diese beiden Fehlermeldungen bestehen

Dann darf evtl. der User unter dem dein Apache läuft nicht auf diese Schnittstelle zugreifen, oder sie ist eben schon geöffnet.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby EvilBolzen » 09. June 2008 18:13

Also der Port an sich wird von keiner anderen Anwendung geöffnet, das kann ich defenitiv sagen. Außerdem käme ja dann nur die !fp Schleife zum Einsatz ohne Fehlermeldung, muss also am User vom APACHEN liegen, habe aber das Standard-Xampp Lite Packet, wo kann ich da denn die User umschalten??

PS: Danke für die Hilfe, das hat schon gut geholfen bisher ^^
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby Wiedmann » 09. June 2008 18:19

wo kann ich da denn die User umschalten??

Kommt darauf an, wie du den Dienst startest.
- als Dienst, in den Eigenschaften des Dienstes "Apache22"
- ansonsten wird dein User genommen, mit dem du selbst angemeldet bist.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby EvilBolzen » 09. June 2008 19:28

hm, da muss ich mal gucken was bei xampp eingetragen ist, hab da wirklich keinen blassen schimmer, aber danke für die prompte Hilfe, nu weiß ich wenigstens wo das Problem seinen Ursprung hat
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby EvilBolzen » 16. June 2008 20:16

Soooooo, hat zwar lang gedauert, aber ich hab das Problem gelöst.
Habe die Rechte im Apache geändert und hatte dann immernoch das Problem, also hab ich den Quellcode nochma überprüft, .und man glaube es kaum, es war NUR ein Stellungsfehler :roll: Nu greifter ohne Mucken aufn Port zu.

Ich bedanke mich für die schnelle und fachkompetente Hilfe.

Wenn gewünscht kann ich den Quellcode online stellen.
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby EvilBolzen » 19. June 2008 07:58

Ach ich hasse Windows, fehler beim Abspeichern hat Zeichen gelöscht, nach wieder hinzufügen kommt wieder der gleiche Mist, ich finde einfach nich bei xampp mit welchem User ich angemeldet bin im Apachen, pls can anybody help?
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby Wiedmann » 19. June 2008 09:32

ich finde einfach nich bei xampp mit welchem User ich angemeldet bin im Apachen,

Das ist einfach der, den du in den Eigenschaften des Apache Dienstes ausgewählt hast. (Sofern deine Frage ist, mit welchen Userrechten dein Script läuft?)

(An den Variablen die man in phpinfo() sieht, kann man das auch meist erkennen)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby EvilBolzen » 19. June 2008 11:20

sooo, danke mit der phpinfo, da steht dass ich als root@localhost angemeldet bin, das Skript sollte demnach auch mit diesen Rechten laufen, weil ich das am gleichen Rechner aufrufe. Habe zu testzwecken nochma das Windows Hyper Terminal und GW-Basic bemüht, mit beiden kann ich ohne Probleme (nacheinander, nicht parallel versteht sich von selbst) auf den Com-Port zugreifen und Daten empfangen/senden. Also muss der Haken irgendwie bei php/Apache sein
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30

Postby Wiedmann » 19. June 2008 11:27

da steht dass ich als root@localhost angemeldet bin,

Wo steht das genau?

("root" ist ja eher nicht ein Username, den es in Windows gibt.)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby EvilBolzen » 19. June 2008 16:26

wo das genau steht schicke ich mal morgen durch, is grad schlecht (Arbeit >_<). Es ist vollkommen egal, ob ich mich mit Administratorenrechten, als Administrator selbst oder irgend ein beschränktes Konto bei Windows zur Anmeldung nehme. Bei allen 3 Kontotypen hab ich den gleichen Fehler
Keiner macht, was er soll!
Jeder macht, was er will!
Aber ALLE machen mit!
EvilBolzen
 
Posts: 9
Joined: 09. June 2008 09:30


Return to PHP

Who is online

Users browsing this forum: No registered users and 13 guests