variablen von python nach php

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
genervternewbie
User
Beiträge: 3
Registriert: Samstag 17. November 2018, 18:42

Dienstag 20. November 2018, 19:08

Mein php

Code: Alles auswählen

<?php
echo shell_exec("sudo python /home/pi/mfrc522/chip.py");
$auspy = ?
?>
mein py
vom karten leser in py

Code: Alles auswählen

card_id = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3])
diese python code gibt mir die Karten oder Chip IDs an "card_id"
mein php script soll aus python diese variable "card_id" übernehmen
Grund mit python lese ich die Karte oder chip Code
mit php kann ich dann abfragen ob in datenbank vorhanden ja oder nein
bein nein sollen noch daten hinzu gefügt werden und in datenbank wieder geschrieben werden
diese daten würde aus liste ausgewählt werden
es würde auch unter python gehen was mir klar ist
auf grund sicherheitsabfrage soll nicht jeder das programm ausführen können
hoffe es war verständlich meine anliegen
Benutzeravatar
sls
User
Beiträge: 283
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Tannhauser Gate

Dienstag 20. November 2018, 19:20

Die Berechtigung für das Script `chip.py` sehen aktuell wie aus? Wenn es mit sudo ausgeführt wird, kann das jeder der in der sudoers enthalten ist.

Wenn shell_exec in PHP ausgeführt wird, kann man das Ergebnis in PHP sicherlich verarbeiten. Vorausgesetzt, du gibst die Ausgabe via print() in Python aus, was direkt in stdout landet. Das ist IMO aber eher eine PHP-spezifische Frage.
With great processing power comes great responsibility.
Benutzeravatar
noisefloor
User
Beiträge: 2523
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Dienstag 20. November 2018, 20:14

Hallo,

PHP und Python spielen nicht gut zusammen. Von daher: setz' alles mit Python um, dann hast du diese Probleme nicht.

Gruß, noisefloor
Sirius3
User
Beiträge: 8791
Registriert: Sonntag 21. Oktober 2012, 17:20

Dienstag 20. November 2018, 20:51

Was ist Dein Ziel? Und warum willst Du PHP verwenden?
Benutzeravatar
__blackjack__
User
Beiträge: 1564
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 21. November 2018, 00:26

@noisefloor: Die Aussage finde ich komisch. Was genau an der Kombination PHP und Python ist da anders als mit PHP oder Python und jeder anderen Programmiersprache? Man kann mit PHP externe Prozesse starten und deren Standardausgabe lesen und weiterverarbeiten und man kann mit Python Daten auf der Standardausgabe ausgeben. Einzelne Zeichenketten als Werte sind simpel, aber auch komplexere Datenstrukturen könnte man beispielsweise als JSON austauschen.

@genervternewbie: Ich bin mir ziemlich sicher, dass die Art wie `card_id` definiert ist, nicht eindeutig ist. Also das es passieren kann, dass mehr als eine Karte/ein Chip zum gleichen `card_id`-Wert führen wird, was dem Sinn so eines ID-Wertes total entgegen läuft.

Code: Alles auswählen

    **** COMMODORE 64 BASIC V2 ****
 64K RAM SYSTEM  38911 BASIC BYTES FREE
   CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█
Benutzeravatar
snafu
User
Beiträge: 5631
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mittwoch 21. November 2018, 02:07

Einfach print(uid[:4]) schreiben. Dann landen die ersten 4 Zeichen der UID in der Standardausgabe und können in PHP verarbeitet werden. Das Problem, dass Anfänge von UIDs nicht zu eindeutigen IDs führen, bleibt aber dabei bestehen. Und in PHP wäre es dann:

Code: Alles auswählen

$zahl = intval(shell_exec("python dein_skript.py"));
shcol (Repo | Doc | PyPi)
Benutzeravatar
noisefloor
User
Beiträge: 2523
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Mittwoch 21. November 2018, 06:54

Hallo,

@__blackjack__: klar geht das - wenn man weiß wie. Nur: die Frage PHP + Python ist gerade im Raspi-Umfeld extrem "populär" und da gibt es die tollsten "Lösungen" mit verbiegen der Apache Config, Root-Rechten wo keine nötig sind, Umbiegen von Verzeichnisrechten etc. Wobei in den allermeisten Fällen es viel einfacher ist, den Server einfach mit 10-20 Zeilen Python-Code in Bottle oder Flask zu implementieren und daraus die Funktionen des Python-Skripts aufzurufen.

Oder anders gesagt: man muss sich ja keine zusätzliche Schnittstelle einbauen, die nicht nötig ist.

Gruß, noisefoor
Benutzeravatar
__blackjack__
User
Beiträge: 1564
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 21. November 2018, 13:10

@noisefloor: Sehe ich ja alles genau so, aber das heisst ja nicht das PHP und Python nicht gut zusammenspielen. Die gleichen Probleme hätte man mit PHP und Shell-Skripten, mit PHP und C oder C# oder C++ oder Java oder JavaScript oder Perl oder Ruby oder …. Und auch in die andere Richtung, also wenn man Python für die Weboberfläche verwendet und da irgendwie PHP einbauen möchte, weil es dafür irgendwas fertiges gibt was man sich in Python erst selbst programmieren müsste. Das Problem ist IMHO nicht, dass da irgendwelche Sprachen nicht gut zusammenspielen, sondern das es meistens keinen Sinn macht zwei Sprachen zu verwenden, die sich beide gut für Webanwendungen eignen, wenn man das auch in *einer* der beiden tun kann.

Wobei ich das auch nicht so ganz pauschal sagen wollen würde. Wenn es beispielsweise bereits eine grössere Webanwendung in PHP gibt und die jetzt um eine Funktionalität mit RFID-Chips erweitert werden soll, kann es schon sinnvoll sein die Kommunikation mit den Chips mit einer Sprache zu lösen in der es dafür bereits fertige Bibliotheken gibt, die man sich in PHP erst selbst schreiben müsste. Ich weiss nicht ob's da was in PHP gibt – das würde ich in so einem Fall vorher auf jeden Fall prüfen.

Code: Alles auswählen

    **** COMMODORE 64 BASIC V2 ****
 64K RAM SYSTEM  38911 BASIC BYTES FREE
   CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█
__deets__
User
Beiträge: 3990
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 21. November 2018, 15:09

@__blackjack__: der User hat ja schon an anderer Stelle seine Probleme beschrieben, und faktisch handelt es sich bei PHP hier um einen Hack, weil er eine MySQL nicht angesprochen bekommen hat von Python aus.
Antworten