Wie startet man aus PERL ein PHP-Script mit Variablen?
Rudolf Horbas
- php
0 Cheatah
Ich habe ein altes perlscript, das einen Fragebogen mit Formular ausgibt und diesen auswertet. Die Ergebnisse samt Daten des Teilnehmers werden in eine Textdatei geschrieben. Das script läuft gut, und ich will es eigentlich auch in perl belassen.
Nun möchte ich, um eine Mailingliste zu erstellen, die Mailadresse aus dem Formular an ein phpscript übergeben, das die Adresse in eine mysql-Tabelle schreibt.
In php lasse ich die Variablen einfach über GET weiterreichen:
script.php?var=user@email
In perl habe ichs so versucht, aber ohne Erfolg (nach dem Beitrag von Klaus Mock in <a href="http://forum.de.selfhtml.org/archiv/2001/6/25894/#m135176" target="_blank">http://forum.de.selfhtml.org/archiv/2001/6/25894/#m135176</a>:
open(PHP,'pfad/zu/php/php pfad/zu/script.php?var=user@email|')
or die 'kann php datei nicht einbinden';
print while (<PHP>);
close(PHP) or die 'kann php nicht schliessen';
Wenn ich die Variable nach dem Scriptnamen weglasse, wird es ausgeführt; sonst bekomme ich nur zu sehen:
"X-Powered-By: PHP/4.0.6 Content-type: text/html No input file specified."
Anders als K.Mock vermutet:
Ein Problem bleibt da noch. Wie kannst DU CGI-Parameter perl shell-Aufruf an PHP übergeben?
Das müsste aber in der PHP-Dokumentation stehen.
... finde ich dort nichts ausser dem Hinweis, dass man phpscripte direkt über die commandline starten kann. Von Variablen ist keine Rede.
TIA,
Rudi
Hi,
script.php?var=user@email
no, no. Das "@" muss URL-kodiert werden (%40).
open(PHP,'pfad/zu/php/php pfad/zu/script.php?var=user@email|')
Der Query-String wird vom HTTP-Server analysiert und in die Umgebungsvariablen geschrieben - hier umgehst Du den Server. Einfach, wenn auch zeitaufwändige Lösung:
perldoc LWP::Simple
"X-Powered-By: PHP/4.0.6 Content-type: text/html No input file specified."
Krass[tm]. Der PHP-Interpreter erhält hier vermutlich den Aufruf-Parameter "pfad/zu/script.php?var", dem der Wert "user@email" zugeordnet ist, und es fehlt danach der Name des Scripts.
Wenn ich das richtig sehe, musst Du die Parameter durch Leerzeichen getrennt angeben und anschließend $argv analysieren. Automagisch bekommst Du die Variablen nicht; dieses Verhalten von PHP bei URL- und POST-Parametern möchte ich eh als Bug bezeichnen.
Cheatah