PHP Scripte in Rails ausführen

Share

15. July, 2009 · Keine Kommentare

Vorweg muss ich etwaige Hoffnungen auf einen direkten PHP Parser in Ruby bzw. Rails enttäuschen. In diesem Post möchte ich jedoch erklären wie man PHP Scripte (oder andere Shell Commands) ausführt und dann in Rails bzw. Ruby weiterverarbeitet. Wer sich etwas mit der Materie auskennt, ist verleitet system() oder exec() des Ruby Kernel Moduls zu verwenden, allerdings führen diese das gewünschte Script lediglich aus, ohne etwaige Ausgaben abzufangen. Ich möchte aber in meinem Beispiel das Ergebnis des externen Scriptes in einer Variable speichern.

Anstatt Kernel#system() habe ich Backticks verwendet und so sieht das ganze dann aus:

ergebnis = `php -f script.php`
p "Ergebnis: #{ergebnis}"

Angenommen man möchte nun noch Variablen von Ruby an das PHP Script übergeben, hängt man diese einfach an das Ende des Shell Befehls an, dabei werden mehrere Variablen mittels Leerzeichen getrennt:

ergebnis = `php -f script.php #{@var1} #{@var2}`
p "Ergebnis: #{ergebnis}"

In PHP können diese Variablen dann wie folgt abgerufen werden:

$var1 = $_SERVER['argv'][1];
$var2 = $_SERVER['argv'][2];

Der Index 0 des $_SERVER['argv'] Arrays beinhaltet übrigens den Scriptnamen.

Natürlich muss man man bei solchen Operationen sehr vorsichtig sein, denn ein direkter Zugriff auf den Prompt des Servers bietet natürlich gefährliche Angriffsmöglichkeiten. Daher sollte man doppelt und dreifach sicher gehen, dass Benutzer der Website keinen schädlichen Code über die verwendeten Variablen einschleusen können.

Ihren XING-Kontakten zeigen Artikel bei Xing veröffentlichen
Kategorie:Ruby On Rails · Tipps · Webdev
Tags: · · · · · ·
meet me in the interwebs
Kaffee-Kasse
Flattr ist ein sehr gut gemachter Micropayment Dienst, der es endlich ermöglicht auf faire Weise Geld zu spenden und einzunehmen.