Apache 1.3.37 + PHP 5.2.2 CGI + More

Hallo!

Glaube nicht, das es an der "apache.conf" liegt.

Hast Du event. das Anzeigen der Bilder in deinem Browser deaktiviert??
Probier mal einen anderen Browser. (Opera oder Firefox)


Gruß masterB
 
Apache 1.3.37 + PHP 5.2.1 CGI - Binaries für Kernel 2.6 + 2.4

Guten Morgen miteinander!

Erst mal danke an cpq für das Bereitstellen seiner Makefiles und Erfahrungen zu Apache 1.3.37 + PHP 5.2.1 CGI. Weil ich zuletzt ein paarmal darauf angesprochen wurde, habe ich mich mal am Bauen der Binaries für den DS-Mod versucht. Heraus gekommen ist Folgendes:

Kernel 2.6: kleinere Binaries bei identischem Funktionsumfang (anders gestrippt), gebaut mit gcc-4.1.2 + uClibc 0.9.28 für ohio (also nicht ar7, sprich 5050/7050 - wäre aber auch möglich bei Bedarf). Kurz angetestet auf meiner 7170, alles okay soweit.
  • Apache (Größe: hier 534 KB statt 667 KB aus Posting #1)
  • PHP (Größe: hier 2.850 KB statt 3.411 KB aus Posting #1)

Kernel 2.4: keine Vergleichsgrößen, da bisher nicht für 2.4 verfügbar; gebaut mit gcc-4.1.0 + uClibc 0.9.26 für ohio (also nicht ar7, sprich 5050/7050 - wäre aber auch möglich bei Bedarf). Nicht getestet, wollte nicht extra alte FW drauf flashen.
  • Apache (Größe: 519 KB)
  • PHP (Größe: 2.823 KB)

Dann habe ich noch kurz mal grob nach dem Speicherbedarf von Apache 1.3.37 im Vergleich zu AVMs websrv und zum httpd der Busybox 1.4.1 geschaut. Dabei habe ich vereinfachend einfach immer geschaut, wie groß der Unterschied des freien Speichers vor und nach Programmstart war (free an der Befehlszeile). Das sieht in etwa so aus:
  • Apache ohne PHP hatte einen Speicherbedarf von 412 bis 520 KB, je nachdem, wie lange er lief und was er machte. Ich hatte allerdings nur eine Seite online, mit mehreren könnte das nach oben gehen. Aber es dient ja nur zur Orientierung.
  • AVMs websrv benötigte ca. 635 KB, servierte allerdings auch die komplette Web-UI plus Telefonsparbuch (LCR Updater, Testversion).
  • Busybox-httpd brauchte nur 96 KB (Wake-on-LAN-CGI aus dem DS-Mod) bzw. 136 KB (DS-Mod-Web-UI). Allerdings ist httpd ja Bestandteil der Busybox, welche ja auch Speicher braucht, andererseits aber sowieso läuft.

Update 03.05.2007, 02:00: Den Speicherbedarf von PHP 5.2.1 habe ich auch mal kurz gemessen, indem ich einfach php -a (interaktiver Modus) aufrief und vorher, während der Session und danach die Werte von free in einer anderen Shell-Session abfragte. Ergebnis: ca. 900 KB.

Vergleiche zu Langzeit-Stabilität und Performanz habe ich keine gemacht, denn die Binaries sind ja ganz frisch. Grob gesagt, kann Apache zumindest RAM-mäßig gut mit websrv mithalten, war sogar etwas kleiner, aber mit weniger Seiten. Wem der Busybox-httpd genügt, der sollte dabei bleiben. Nach Aussage von Christian (cpq) läuft sein Apache 1.3.37 seit Monaten stabil durch und hostet eine Webseite, die sich für mich wirklich performant anfühlt. Das relativiert meine Vorurteile gegenüber dem "großen" Apache auf der "kleinen" Fritz!Box doch ein wenig, und ich würde sagen, daß er durchaus seine Berechtigung hat. Für PHP gilt das nur eingeschränkt, denn erstens ist das Binary sehr groß und zweitens benötigt es ebenfalls entsprechend Speicher und Prozessorzeit (Letzteres nicht geprüft). Da wäre die Kombination (Apache + Lua) oder (Apache + Haserl + Shellskripten) oder gar (Apache + Haserl + Lua) sicher sinnvoller. Haserl und Lua sind im DS-Mod enthalten, falls jemand neugierig ist auf schlankere Skriptsprachen bzw. CGI-Wrapper.

Zu den Dateianhängen: je ein Archiv für Kernel 2.4 und 2.6. Jedes enthält einfach nur die zwei Binaries, welche man einfach in Christians Paket aus Posting #1 einbauen kann. Dann hat man gleich eine minimale Verzeichnisstruktur, ein (anzupassendes) apache.conf, ein php.ini und zum Testen ein phpinfo.php. Ich habe mir nicht die Mühe gemacht, das alles auch nochmal hier einzupacken. Wozu auch? Christian hat das wunderbar vorbereitet. Vielen Dank nochmal dafür und für die Patches.

Update 06.05.2007, 14:45 Die Binaries in apache_php_static.tar.bz2 sind statisch gelinkt, aber mit meinem ds26-14.4 gebaut (uClibc 0.9.28). Sie sollten auf Kernel 2.4 ebenfalls laufen, da statisch gelinkt. Das Bauen mit ds-0.2.9-p8 für uClibc 0.9.26 (verwendet von den Kernel-2.4-Firmwares) führte zu PHP-Abstürzen.
 

Anhänge

  • apache_php_26.tar.bz2
    1.1 MB · Aufrufe: 261
  • apache_php_static.tar.bz2
    1.1 MB · Aufrufe: 162
Zuletzt bearbeitet:
Auch einen Guten Morgen :)

@kriegaex
Wie hast du PHP kompiliert (Friboli?)?
Wollte PHP mit IMAP und MySql Support unter Friboli kompilieren, leider kommen immer Binaries für x86 raus obwohl target und host nicht auf x86 eingestellt sind.
Siehe Skript von Posting #1 "php-5.2.1-compile-script.zip"
Hast du ne Idee?

@wumme
Vermutlich versucht Apache 2.x "sendfile" zu verwenden und dein Kernel unterstützt das nicht.
Deaktiviere das mal mit:

EnableSendfile Off

in der conf Datei.
Du kannst es auch spezifisch für Unterverzeichnisse angeben:

<Directory "/bilderodersonstwas">
EnableSendfile Off
</Directory>

Hatte das Problem mal in Verbindung mit PHP. Dachte es läge an PHP, war aber dann doch ein Apache Problem.
 
Holofox, ich habe ein DS-Mod-Paket daraus gemacht und es durchkompiliert. Womit, steht ja oben dabei. FriBoLi ist ja nur (irgend-) ein Linux, ich verwende ein anderes. Aber das sollte egal sein.
 
alsoeigentlich wollte ich es nochmal für 2.4 compiliert haben und das:

Code:
php: can't load library 'libm.so.0'
[Sun Sep  8 14:10:09 2002] [error] [client 192.168.x.x] Premature end of script headers: /var/apache/cgi-bin/php

zu vermeiden.

ich hab kein ds mod...gibts da keine version bei der alle libs statisch gelinkt sind ?

aber trozdem danke für die mühe !
 
Hat schonmal jemand versucht mit Apache und PHP CGIs auszuführen?
Habe mal ein kleines Shell Skript ("ls -l") mit PHP aufgerufen, klappte auch wunderbar. Das Ganze mit einerm "ether-wake" leider nicht :-(
Gibt immer einen Fehler zurück. Vermutlich hat der Apache User keine Berechtigung Sockets zu öffnen ??
Steh auf dem Schlauch, hat dazu jemand eine Idee?
 
@Milchpirat: Leg Dir bitte eine sinnvolle Signatur zu, damit man überhaupt in der Lage ist, ohne weitere Recherche zu erkennen, welche Hard- und Firmware-Ausstattung Du hast.

Davon abgesehen, hatte ich ja geschrieben, die 2.4-Version sei ungetestet. Ich baue gerade eine Version mit statisch gelinkter libm. Daß die in 2.4-FWs fehlt, war mir nicht klar, bei 2.6 ist sie ja dabei, auch ohne Mod. Schau mal nachher nach einem Update meines vorherigen Postings. Wir müssen dann schrittweise testen, ich weiß nicht, welche Libs evtl. noch fehlen könnten. :)

@Holofox: "Ein Fehler" ist nicht sehr hilfreich.
 
Super, hat geklappt! Danke holofox.

Musste wirklich nur "EnableSendfile Off" in der .conf hinzufügen und schon klappt's mit den Bildchen :p
 
@kriegaex
Stimmt. Sorry hab ich vergessen :-(
Im error.log steht:
ether-wake: can`t create raw socket: Operation not permitted

Ausgabe von ps u.a.:
750 root 528 S -sh
957 root 544 S ./apache
958 anonymou 688 S ./apache
959 anonymou 544 S ./apache
966 root 364 R ps
 
@kriegaex
Hier das Skript als Text:

<?php
$cmd = "/usr/bin/ether-wake -i eth0 00:00:00:00:00:00";
system($cmd,$return_value);
($return_value == 0) or die("returned an error ($return_value): $cmd");
?>

Skript gibt folgendes aus:

returned an error (1): /usr/bin/ether-wake -i eth0 00:00:00:00:00:00

MAC Adresse hab ich hier mit Nullen ersetzt...
 
Zuletzt bearbeitet:
@ kriegaex

ok signatur geändert ;-)
und von dem libs her sind es mind.: libm.so.0 und libgcc_s.so.1 könnten aber noch mehr sein... oder werden ALLE benötigten libs gleich beim start abgefragt ?

[EDIT]
also die neue static funktioniert auch nicht. des weiteren gibts ein prob mit der neuen apache bin:

Code:
# ./apache
fopen: No such file or directory
apache: could not open document config file ./apache-1.3.37/conf/apache.conf

also der pfad zur config wär besser so: ./conf/apache.conf

[EDIT2]
oh ja passt nicht dazu aber ich würde gern auf diesen thread und speziell auf meine frage aufmerksam machen.
 

Anhänge

  • path.jpg
    path.jpg
    12.7 KB · Aufrufe: 106
Zuletzt bearbeitet:
Milchpirat:
Du solltest den apache immer mit der -f option starten
Code:
./apache -f /pfad/des/logfiles.conf
Ohne die -f Option nimmt er den Pfad, der beim Kompilieren angegeben wurde, und der stimmt wohl mit deinem System nicht überein.
 
@Holofox: Apache darf "by design" nicht als root laufen, weswegen Du ja einen anderen Benutzer verwendest. Allerdings muß ether-wake als root laufen. Die Manpage sagt dazu:
EXIT STATUS
This program returns 0 on success. A permission failures (e.g. run as a non-root user) results in an exit status of 2.
Das ist ein Dilemma. Wenn man nun Sicherheitsaspekte in den Wind schießt, kann man sich den Apache wohl auch so bauen, daß er als root lauffähig ist, was aber Sicherheitsprobleme aufwirft. Beim Startversuch als root sagt er ja:
Apache has not been designed to serve pages while running as root. There are known race conditions that will allow any local user to read any file on the system. If you still desire to serve pages as root then add -DBIG_SECURITY_HOLE to the EXTRA_CFLAGS line in your src/Configuration file and rebuild the server. It is strongly suggested that you instead modify the User directive in your httpd.conf file to list a non-root user.

@Milkpirate: Fehlermeldung bitte. Beschwert er sich immer noch über libm? "Geht nicht" ist einfach zu wenig.
 
@ kriegaex
hm.. hab ich da geht nicht geschrieben ?.. naja ihn verlangt es immer noch nach den libs...
 
@kriegaex
@holofox

ist zwar etwas umständlich aber könnte man apache nicht ein script ausfüren lassen das den user ändert und das eigentliche script startet ?
oder haben alle child prozesse von apache die/den selbe(n) usergoup/user ?

apache => script1 | change user ./script2 => scipt2 | ....

oder reicht da auch eine einfache übersetzung:

apache => script1 | ./script2 => script2 | ....
 
Lieber Milchpirat, wieso postest Du zweimal hintereinander, statt zu editieren? Und weshalb stellst Du neue Fragen, anstatt meiner Bitte nach Fehlermeldungen nachzukommen? Weißt Du was, hilf Dir doch bitte selbst. So dauert es mir zu lange. Schade, ich hätte wirklich gern versucht, Dir behilflich zu sein. Sei mir bitte nicht böse, aber so geht das einfach nicht.
 
@kriegaex
So weit war ich auch schon. Und den Apache mit dem Flag "BIGSECURITYHOLE" zu kompilieren möcht ich auch nicht ;-)

Deshalb wollte ich ether-wake das Superuser-Bit geben. Hab also /usr/bin/ether-wake auf meinen USB Speicher kopiert und mit chmod geändert:
chmod +s ether-wake
Dabei kam allerdings das raus:
chmod: ether-wake: Operation not permitted

Habs jetzt aufgegeben und so gelöst:
Apache läuft mit PHP (CGI) einwandfrei, bis auf shell Aurufe welche root rechte benötigen ("ping" und "ether-wake").
Also läuft zusätzlich der mini_httpd auf einem anderen Port als root welcher nur definierte shell scripte ohne parameter (direkt) aufruft.

Funkioniert wunderbar :rock:

Übrigens, mini_httpd und PHP als CGI kann man auch vergessen, weil mini_httpd keine Umgebungsvariable wie SCRIPT_FILENAME für PHP usw. setzt! Versuchte ein kleines CGI Wrapper Skipt zu nehmen welches vor dem PHP Aufruf die Env Variablen setzt. Es bleibt aber jeder Prozess bei der Ausgabe "hängen"...

So brauch ich halt 150kb mehr Speicher für den mini_httpd... Aber was solls...
 
Superuser-Bit geht nur, wenn Du auch ein UNIX-Filesystem hast, also z.B. ext2. Dein USB-Speicher hat nicht zufällig eher sowas wie FAT? ;-)
 
in diesem posting habe ich folgedes geschrieben:

naja ihn verlangt es immer noch nach den libs...

das war die antwort auf deinen vor hier

und meine "fragen" sind in erster linie für mich absolut nicht relevant sonder sollten euch eher eine anregung zu einem eventuellen lösungsweg geben. und da ich von unix nicht viel ahung habe sind meine aussagen mit einem "?" versehen um zu kennezichen das ich nicht weiß ob es so funktioniert.

zur selbsthilfe: naja ich wär nicht hier wenn ich mir selbst helfen könnte.

mach dich mal n bischen locker wir schreiben nicht die un-charta :)
 
Zuletzt bearbeitet:
@kriegaex
Oh je, klar läuft mein USB Stick mit FAT, hätte ich mir denken können...
Guter Tipp :)
Blöde Frage: Kann die FritzBox mit ext2 format. USB Devices umgehen?

Denn das mit dem Superuser Bit wäre noch ne Aktion wert ;-)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.