Binfmt
Inhaltsverzeichnis
Allgemein
Unter Linux kann man mit binfmt's festlegen welche files
binaerformate (btw. executables) sind und wie sie zu behandeln sind.
die erfolgt (z.b. unter debian) mit: /usr/sbin/update-binfmts
Man kann das an verschiedenen dingen fest machen:
- file-endung (z.b. .php)
- magic (z.b. 6df20d0a fuer python)
fuer eine genaue erklaerung zu magic consultiere die manpage
hier ist die option --magic der relevante parameter
Das ergebis ist, dass man keine Shebang zeile mehr benoetigt.
fuer phpscripte bedeutet dies z.b. dass man sie ueber einen cronjob ausfueren kann, die scripte gleichzeitig aber in einem webserver mit mod_php laufen koennen. mod_php wuerde ich aber an der shebang zeile stoeren, wenn sie vorhanden waere.
/usr/bin/at IGNORIERT die bin_fmt angaben! PHP-Scripte ohne shebang zeile koennen von ihm nicht gestartet werden oder man setzt /usr/bin/php </path/to/script.php> explizit!!! |
Cron beruecksichtigt bin_fmt!!!!! feel free to use! |
Bitte beachte weiterhin, dass /proc fluechtig ist!!
Diese zuordnung muss also bei jedem booten vorgenommen werden!
PHP
/usr/sbin/update-binfmts --install php5 /usr/bin/php --extension php
Hier wird fuer alle files die auf '.php' enden der interpreter /usr/bin/php für die ausfuerung verwendet
Beispiele
Hier ein paar beispiele fuer bin_fmt angaben.
Python-2.4 Beispiel
# cat /proc/sys/fs/binfmt_misc/python2.4 enabled interpreter /usr/bin/python2.4 flags: offset 0 magic 6df20d0a
PHP Beispiel
# cat /proc/sys/fs/binfmt_misc/php5 enabled interpreter /usr/bin/php flags: extension .php