PHP (statt Perl) als Kommandozeilen-Script

slotty

New Member
Moin!

Wollte nun endlich mal einige Sachen bei meinem Homeserver automatisieren.

Nun hab ich mich natürlich schon etwas Informiert und festgestellt, dass komplexere Sachen wohl meist in Perl geschrieben werden.
Von Perl hab ich aber absulut keine Ahnung, programmiere seit einigen Jahren PHP.

Spricht etwas dagegen Kommandozeilen-Scripts mit PHP zu schreiben? (Möglichkeiten/Sicherheit/etc.)
Die passenden Funktionen zum auslesen von STDIN bzw schreiben auf STDOUT und STDERR sind ja vorhanden.

Versteht mich nicht falsch, hab schon einige erfahrung mit Linux. Hab mich allerdings nie mit dem Thema Scripting beschäftigt.
Wenn ich mich erst in Perl o.ä. einarbeiten muss geht 50% der Zeit für Einarbeitung und Fehlersuche drauf...

Vielen Dank für die Anteilnahme ;)
 
Kann man natürlich grundsätzlich verwenden. Du musst dafür die FUnktionen in der PHP.ini erlauben. Das sollte man aber nicht tun wenn noch weitere Personen (z.B. Kunden) Zugriff auf PHP bzw. deinen Server haben.

Gruß
 
Beim Aufruf über die Kommandozeile wird meines wissens die php-cli.ini benutzt!
Es sollte doch eigentlich keine Möglichkeit geben ein PHP-Script über den Apache als Kommandozeilen-Script zu starten?
(So das die php-cli.ini benutzt wird)

Also steht dem vorhaben theoretisch nichts im Wege, da ich Apache und Kommandozeile getrennt konfigurieren kann.
 
Es sollte doch eigentlich keine Möglichkeit geben ein PHP-Script über den Apache als Kommandozeilen-Script zu starten?
(So das die php-cli.ini benutzt wird)
Doch, mittels exec, shell_exec, proc_open oder Alternativen ;)

Du musst dafür die FUnktionen in der PHP.ini erlauben.
Du kannst auch mittels "php -c /pfad/zu/deiner/php.ini /pfad/zum/script.php" eine ini fuer diesen Aufruf spezifieren.
Wenn diese php.ini leer ist, werden fuer alle Werte die Defaults genommen.

Spricht etwas dagegen Kommandozeilen-Scripts mit PHP zu schreiben? (Möglichkeiten/Sicherheit/etc.)
Nein, PHP kann ja auch viel mehr als "nur" Webseiten servieren.
Stichwoerter sind Socket-Server, forking, ...
Ich realisiere aus dem gleichen Grund wie du meine Kommandozeilenskripte meist in PHP und konnte bislang keinerlei Einschraenkungen gegenueber anderen Skripting-Sprachen ausfindig machen. Dank pear und pecl Extensions beherrscht PHP so ziemlich alles was man braucht, und da extensions sich zur Laufzeit laden lassen ( dl() ) kann man auch Skripte mit exotischen Extensions verteilen.

Die passenden Funktionen zum auslesen von STDIN bzw schreiben auf STDOUT und STDERR sind ja vorhanden.
Ja, und STDIN/STDOUT/STDERR sind bereits offene Filepointer.
argv[] beinhaltet uebrigens alle Start-Parameter
 
Was ich an PHP als Commandozeilen-Script nicht mag, ist der Umstand der Shebang-Zeile.
Sollte man ein Script mal sowohl für Web als auch in der Shell nutzen wollen, bekommt man hier ein Problem. :(

huschi.
 
Ich behelfe mir da mit einem kleinen bash-Wrapper-Script, daß den PHP-Interpreter mit aufruft:
Code:
#!/bin/bash
/usr/bin/php /path/to/script.php
Und den Shebang spare ich mir dann im PHP-Script. Ähnlich sieht es auch auf, wenn ich ein PHP-Script per Cronjob verarbeite.
 
Back
Top