Aufrufen, Perl script aus PHP und übergeben Variablen, während es auch Verwendung variablized perl-Skript-name
Ich normalerweise Aufruf von perl-scripts von PHP als unten, und übergeben Sie Variablen so und es funktioniert Prima, aber jetzt Baue ich eine Komponente für re-use-dort möchte ich auch variablize die perl-Skript-name, dass ich mich übergeben, und das gibt mir einige Kopfschmerzen, so bin ich Frage mich, ob jemand kann darauf hinweisen, eine bessere Möglichkeit, dies zu tun, da mein Weg nicht funktioniert.. vielen Dank..
den Weg, der funktioniert, ohne variablized perl Dateiname:
$file = "/var/www/other_scripts/perl/apps/perlscript.pl $var1 $var2 $var3 $var4";
ob_start();
passthru($file);
$perlreturn = ob_get_contents();
ob_end_clean();
Mein Versuch, variablize die perl-Datei, die scheint nicht zu funktionieren für mich, sehen Sie in der obigen, wie es ist, einschließlich der $var(s) in den ersten " ", das finde ich seltsam, aber dies scheint die einzige Möglichkeit zu sein, dass es funktioniert und ich nicht sicher war, wie Sie selbst replizieren diese mit einem variablized perl Dateiname:
$perlscript_file = "/var/www/other_scripts/perl/apps/" . $perlscript .".pl";
$file = $perlscript_file . $var1 . $var2 .$var3 . $var4;
ob_start();
passthru($file);
$perlreturn = ob_get_contents();
ob_end_clean();
InformationsquelleAutor Rick | 2010-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Art und Weise nicht arbeiten, weil Sie verketten alle Parameter ohne Leerzeichen, effektiv machen Sie einen parameter.
Versuchen
Durch die Art und Weise, wenn die Parameter aus einer externen Quelle, die Sie MUSS bereinigen Sie mit
escapeshellarg()
. Das gleiche gilt für$perlscript
- wenn es aus einer externen Quelle oder sogar von Benutzereingaben, tun einescapeshellcmd()
.InformationsquelleAutor Pekka 웃
On a sidenote, gibt es ein CPAN-Paket, zielt darauf ab, eine Brücke zwischen PHP und Perl, die es erlauben würde, Sie zu tun, etwas wie das folgende in PHP:
Nicht sicher, wie stabil das ist wenn. Sehen
Wenn Sie Apache verwenden, können Sie auch verwenden,
Sehen http://php.net/manual/en/function.apache-note.php
InformationsquelleAutor
In deinem zweiten code, sind Sie in der Verknüpfung der Variablen, ohne Leerzeichen zwischen Ihnen. Sollten Sie
sprintf
formatieren diese schön:InformationsquelleAutor reko_t