Rolf B: PHP-Programm zu exe-Programm compilieren

Beitrag lesen

Hallo Lydia,

denn meine vorgestellte PHP-Lösung funktionierte ja!

Du möchtest dein PHP aber als Phpflexer-EXE lokal laufen lassen, und nicht remote auf einem Webserver, richtig? Das ist ein gewaltiger Unterschied.

REMOTE_ADDR ist - wie schon erwähnt - ein Wert, der vom Webserver bereitgestellt wird, wenn das PHP Script über HTTP aufgerufen wird. Und der Wert ist auch nur dann sinnvoll, wenn der Webserver auf einer anderen Maschine ist als der Client. Mein lokaler PHP Webserver (IIS unter Windows) gibt mir bei einem Aufruf von localhost/testweb/phpinfo.php als REMOTE_ADDR den Wert ::1 aus, also die IPv6 localhost-Adresse.

WENN aber der Webserver auf einer anderen Maschine ist, ist REMOTE_ADDR immer noch nicht zuverlässig. Ein NAT-Router auf dem Weg zwischen Client und Server verändert die Adresse.

Das gezeigte Batchfile, das IPCONFIG aufruft, kommt der Sache schon näher. Und es zeigt auch die weiteren Probleme deiner Aufgabenstellung: Ein Computer muss nicht unbedingt nur eine IP haben. Er kann bei Parallelbetrieb der IPv4 und IPv6 Stacks zwei Adressen haben. Und je nach Szenario gibt es auch mehr als einen Netzwerkadapter, jeder mit eigener IP. Es gibt diverse Kriterien, die bestimmen, welcher Adapter verwendet wird.

Und wenn Du hinter einem NAT-Router sitzt und wissen willst, mit welcher IP Du auf einem Internet-Server ankommst, hilft Dir weder PHP noch IPCONFIG, dann musst Du deinen Router befragen welche externe IP ihm der Provider gegeben hat, oder Du musst einen Webservice jenseits des Routers aufrufen, der Dir die IP zurückmeldet.

Die Frage, wie man das Ergbnis in "die Taskleiste" bekommt, ist dann nochmal eine andere. Das ist Windows-Programmierung. Meinst Du überhaupt die Taskleiste? Oder vielleicht den Systray? In der Taskleiste steht ein Icon pro laufendem Programm (ggf. mehrere gleichartige Programme übereinander gestapelt). Im Systray sind diese Winz-Icons ohne Text, die ggf. ein Tooltip haben und meistens ein Kontextmenü.

Und dann gibt's noch Programme wie die Sprachenleiste (die DE/EN-Umschaltung), die es fertigbringen, sich im Systray zu zeigen aber mehr als ein Icon anzuzeigen. Das sind jetzt sehr spezielle Windows APIs, die ich selbst noch nicht anprogrammiert habe - aber die mit PHP definitiv nicht verfügbar sind. Vermutlich musst Du da auf C/C++ hinunter, in C# (Windows Forms) habe ich dazu noch nie was gesehen. Dedlfix offenbar schon, also könnte das gehen.

Tipp: BGINFO. Dieses Programm modifiziert das Hintegrundbild deines Desktop und zeigt darüber eine Menge Infos über dein System an. Vielleicht ist das ja genau das, was Du brauchst.

Rolf

--
sumpsi - posui - clusi