Pristup na seriovy port z PHP

Pavel Kutina hw na prelude.cz
Pondělí Prosinec 30 17:42:43 CET 2013


Zdravim,

mam tu takove jedno skoro OT - potrebuju z PHP komunikovat s moduly na 
seriovem portu (seriovy port na serveru, server Apache 2.2 bezici lokalne na 
WinXP) a mam takovy drobny problem.

Pouzivam php_dio a ten nejjednodussi zpusob komunikace:

exec('mode COM2: baud=9600 data=8 stop=1 parity=n');
$fd1 = dio_open('COM2:', O_RDWR | O_NOCTTY | O_NONBLOCK);
if(!$fd1)
 { die("Chyba pri otevirani COM2"); }

Nasledne pak komunikuju pres dio_read($fd1) a dio_write($fd1) atd.

Vlastni komunikace je bezproblemova, problem mam s pristupem k tomu portu 
pri spusteni serveru. Pokud restartuju PC, spustim webserver (jako servis s 
pravy lokalniho uzivatele, ktery ma admin prava - ja vim, ze to je 
bezpecnostni hruza, ale v tomhle pripade to nevadi, PC je v podstate 
izolovane) a v browseru otevru skript, ktery vyse uvedenym zpusobem saha na 
seriovy port, tak mi to vyhodi chybu o zamitnuti pristupu na port:

Warning: dio_open() [function.dio-open]: cannot open file COM2: with flags 2 
and permissions 0: Permission denied in C:\www\vhosts\localhost\test.php on 
line 5
a nasled¨ne vyhnije na die: Chyba pri otevirani COM2


Pokud ale pred tim startem webserveru (resp. pred spustenim tohoto skriptu) 
ten konkretni port otevru nejakym terminalem rucne (pouzivam teraterm, staci 
opravdu jen otevrit a zavrit spojeni), skript se spusti a bezi, jako by se 
nechumelilo, pricemz vesele komunikuje.

Nejde o to, ze se to otevre az napodruhe, ono se to bez toho rucniho 
"prostouchnuti" jinak nepodari vubec, ani po X pokusech (kde X je vetsi, nez 
jakekoliv rozumne cislo :)

Zvlastni je, ze mi to dela na jednou ze dvou PC - na obou WinXP Pro, na obou 
stejne karty s porty, stejna instalace onoho lokalniho Apache s PHP 
(konfiguraky i vsechny knihovny prekopirovane z jednoho na druhe, abych 
vyloucil nejaky preklep). Doma mi to ve stejne konfoguraci bez problemu 
chodi i s Win7 64bit. Netusite, kde by mohl byt zadrhel?

Priznam se, ze me to malicko irituje. Docela dost malicko :)

Pavel Kutina 



Další informace o konferenci Hw-list