Binfmt

Aus SchnallIchNet
Wechseln zu: Navigation, Suche

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:

  1. file-endung (z.b. .php)
  2. 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.

Achtung.jpeg /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!!!
Achtung.jpeg 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