Toon posts:

Serial module en Json

Pagina: 1
Acties:

Onderwerpen

Vraag


  • herman0805
  • Registratie: Januari 2023
  • Laatst online: 17:53
ik heb volgende probleem:
Python script dat aangeroepen wordt via een PHP bestand (beide zijn eenvoudige test bestandjes)


python script:
#import serial
import json
D = "dit is een string"
print ("op scherm")
print()
print (json.dumps(D))
...
PHP bestand
<?php
$command = escapeshellcmd("python /var/www/html/test/var.py");
$output = shell_exec($command);
echo $output."<br>";
echo "php_works";
?>

Als ik het Python bestand op de server uitvoer werkt het zoals voorzien
------------------------------------------------------
xxx@pi:/var/www/html/test $ python var.py
op scherm

"dit is een string"
--------------------------------------------------------

In de browser komt echter op het scherm het volgende:
----------------------------------
op scherm "dit is een string"
php_works
-------------------------------
Waarom wordt die "new line" niet geprint?

Het grootste probleem zit hem echter bij de module serial.
Als ik de commentaar voor de "import serial" in het python bestand weg haal komt er niets meer in de browser.
---------------

php_works
-----------------

Wat kan hier het probleem zijn?
Python versie: 3.9.2
heb op de server ook al volgende gedaan
pip3 uninstall serial
pip3 uninstall pyserial
pip3 install pyserial

Wie kan helpen?

Dank u
Herman
...

Alle reacties


  • Ryanirin
  • Registratie: Maart 2012
  • Niet online
De reden dat je de linebreaks niet zit is vermoed ik omdat html break-tags verwacht, en geen \n. Probeer je $output is tussen <pre> tags te zetten, en kijk of je de linebreaks wel ziet.

Waarom je pythonscript niet werkt met de import serial regel niet gecomment durf ik niet te zeggen, vermoedelijk omdat hij de module niet kan importeren en een error geeft? Werkt het op de commandline wel?

  • herman0805
  • Registratie: Januari 2023
  • Laatst online: 17:53
Dank voor de respons,
Via de commandline werkt alles zoals voorzien. Ben intussen iets verder en heb volgende gevonden.
------------------------
ModuleNotFoundError: No module named 'serial'
php_works
----------------------
Dit krijg ik nu (via de optie $command = exec("python /var/www/html/test/var.py 2>&1"); )
Zet ik de "import serial" in commentaar werkt het wel. Dus waarom wil PHP niet (onrechtstreeks) die module serial laden wat via het script op de server wel gebeurd? De module "import json" doet die wel.
Herman

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:49

Janoz

Moderator Devschuur®

!litemod

Zeer waarschijnlijk komt dat omdat het script vanuit php onder een andere gebruiker, en dus ook andere python omgeving draait. Als je ipv het python script eens 'whoami' uitvoert is dat denk ik wel te zien.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:06

Matis

Rubber Rocket

Ja, of draai export of env. Dan kun je vergelijken hoe de omgeving van je PHP-gebruiker er uit ziet en hoe de omgeving van je gewone gebruiker er uit ziet.

Grote kans dat de module serial in de home directory van de gebruiker geïnstalleerd staat en daar kan de php / www-data gebruiker niet bij.

If money talks then I'm a mime
If time is money then I'm out of time


  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 22:28
De module serial is geen standaard python module dus die kan hij niet vinden en crashed dus op die regel.

Wat wil je met die module serial, die is bedoelt om com poorten te lezen.
Als je die nodig hebt moet je die module eerst toevoegen aan je python omgeven met behulp van pip.

En een linebreak in html is <br> en geen \n daar snap hij niets van

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


  • herman0805
  • Registratie: Januari 2023
  • Laatst online: 17:53
Het is intussen opgelost.
Had de install gedaan als user en niet als sudo, daardoor staan de modules in een local directory en niet in de algemene directory waar Python en de rest van de modules staan.
Allemaal bedankt voor de hulp.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee