PHP unter FreeBSD 10.0 schneidet Texte ab

C

CrimsonKing

Guest
Ein Freund hat sich von mir einen Webserver unter FreeBSD 10.0 installieren lassen. Dokuwiki, WordPress und so weiter laufen auch, aber irgendwo scheint das Sessionhandling im Eimer zu sein: Das Speichern längerer Texte in Wiki und Blog führt reproduzierbar dazu, dass der letzte Teil der Texte abgeschnitten wird. Ich unterstelle jedenfalls mal, dass das am Sessionhandling liegt.

phpinfo: [zensiert]

Ideen?
 
Zuletzt bearbeitet von einem Moderator:
Hast du mal geschaut ob der Client den POST-Request vollständig abschickt bzw. er am Server vollständig ankommt (tcpdump)? Erstelle mal eine PHP-Datei mit folgendem Inhalt und schick an diese einen der großen POST-Requests bei dem der Inhalt abgeschnitten wird und schau dir die Antwort an (sie sollte den POST Inhalt enthalten).
PHP:
<?php
header("Content-Type: text/plain");
print($HTTP_RAW_POST_DATA);
print('---EOF---');
?>
 
Kannst du mal folgende Datei hoch laden *scp transfer mode: binary*, die Endung zu "php" ändern und mir die Uri zukommen lassen bzw. posten?
 

Anhänge

  • dump-it.txt
    886 Bytes · Aufrufe: 270
Binary? Warum'n?
Ansonsten: [zensiert]
 
Zuletzt bearbeitet von einem Moderator:
Hatte auf iwelche Specialchars o.ä. getippt, dann probiere es mal bitte mit
Code:
<?php
header("Content-Type: text/plain");
print(file_get_contents('php://input'));
print('---EOF---');
?>
 
Also viel konnte ich auch nicht her raus finden, bis zu einer "Content-Length" von 4023 funktioniert es häufig ohne Probleme, wobei gelegentlich die Antwort abgeschnitten wird, ab 4024 wird es häufiger. Zwischen drin schickt dein Server folgendes als Antwort ohne Header (die Zahlenkolonne ist ein teil der POST-Data):
Code:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Not Implemented</title>
</head><body>
<h1>Not Implemented</h1>
<p>6789-01234567890123456789-01234567890123456789 to / not supported.<br />
</p>
</body></html>
 
... Webserver unter FreeBSD 10.0 ... Ich unterstelle jedenfalls mal, dass das am Sessionhandling liegt.
Ideen?

Weil? Stottert ihr die Artikel in Bröckchen auf den server? Denn wenn das nicht der Fall ist, dann funktioniert das session handling - oder eben nicht. Session handling sagt dem server ja im wesentlichen lediglich, zu welcher Verbindung etwas gehört (plus: PHP und Komplizen hängen daran auch session lokale Daten auf).

Ich würde als erstes blöd ins log gucken (wozu man den server evtl. erst veranlassen/konfigurieren muss) und schauen ob die Daten ("der Artikel/Beitrag") überhaupt ankommt, rein verbindungstechnisch. Dann würde ich mir FCGI oder mod_PHP oder whatever ansehen, ob die Daten je im PHP backend ankommen.

Aus Erfahrung würde ich, wenn ich was von "größere Datenbrocken machen Schwierigkeiten" höre, immer auf einen (zu kleinen) Puffer oder auf handover, z.B. zwischen http server und PHP backend tippen.

Nebenbei, aber nicht unwichtig: phpinfo, test interfaces und Co doch bitte hinter ein Passwort! (Das dann gerne hier im Forum stehen kann). Grund: Jede einzelne Sekunde sind zigtausend scriptk1dd13 crawler unterwegs, die nach solchen Standardlücken suchen. Und deinem Freund zu einem Eintrag in irgendeinem ukrainischen Verbrecherforum zu verhelfen war's wohl nicht, was du vorhattest ...
 
Die phpinfo liegt da auch nur, so lange noch nicht alles läuft. :)
(Hoffe ich.)

Es kommen schon Daten an - nur beim Speichern fliegt alles nach einer "Grenze" um die 1.000 Byte raus (mal 9xx, mal 10xx).
 
Vorsicht, Missverständnis!

Schon klar, dass ihr phpinfo nicht dauerhaft public lasst. Nur: Wen ihr den server nicht erheblich verändert, dann gilt das, was da jetzt steht ja auch weiterhin, auch wenn's mal nicht mehr sichtbar ist. Will heissen, so Zeug, wenn auch nur kurz, public zu stellen, heisst eine Einladung an Hobbykriminelle zu schicken, indem die jetzt haufenweise Infos über euren server/setup finden, das zumindest sehr ähnlich ja auch in Monaten noch zutreffend ist.
Zumal, bitte nicht übel nehmen, apache/PHP sowieso nicht gerade eine high security Kombi, ist sondern ziemlich genau im idealen und üblichen Fahrwasser von caiberkriminellen liegt (Aussprache original BKA *g).

Die phpinfo liegt da auch nur, so lange noch nicht alles läuft. :)
(Hoffe ich.)

Es kommen schon Daten an - nur beim Speichern fliegt alles nach einer "Grenze" um die 1.000 Byte raus (mal 9xx, mal 10xx).

"beim Speichern"? * hellhörige Nachfrage
 
Hmm, wie hast du das PHP im Apachen eingebunden? Laut Info ist es als Filter eingebunden, nicht als Handler.
Siehe dazu auch den Eintrag von ./configure --help:

--with-apxs2filter=FILE
EXPERIMENTAL: Build shared Apache 2.0 Filter module. FILE is the optional
pathname to the Apache apxs tool apxs

Versuch mal bitte, das PHP als Handler einzubinden.

Rob
 
Naja, er ist Einsteiger, da mag ich ihm nicht mit nginx kommen. - Ja, beim Speichern. Bedeutet das was?

@Rob Der Handler ist, glaube ich, auch installiert. Aber wie stelle ich den Filter ab?
 
Wie hast du PHP denn installiert und im Apachen eingebunden?
Poste doch mal die Apache-Konfiguration, oder wenigstens die Auszüge, in denen php vorkommt.

Rob
 
Um es vorweg zu nehmen: es reichen diese beiden Zeilen, um PHP als Modul (Handler) zu betreiben:

LoadModule php5_module libexec/apache24/libphp5.so
AddType application/x-httpd-php .php

Wenn es dann immer noch nicht klappt, wäre es noch interessant zu wissen, mit welchem MPM der Apache läuft.

Rob
 
Poste doch mal die Apache-Konfiguration, oder wenigstens die Auszüge, in denen php vorkommt.

Code:
LoadModule php5_module  libexec/apache24/libphp5.so

<IfModule php5_module>
  DirectoryIndex index.php index.html
</IfModule>
<IfModule php5_module>
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
</IfModule>

und wenn Du mal max_input_time auf -1 setzt? Jetzt sind 60s konfiguriert und mit -1 hebst Du die Beschränkung auf.

Hab' ich mal geändert. Aber die Scripts laufen doch gar nicht so lange.
 
Wo müsst' ich das einstellen?

(Da merkt man, wie viel Glück ich bisher beim Serverkonfigurieren hatte.)
 
Was sagt
$ pkg info -f php56

bzw. mit welchen Optionen hast du PHP installiert?
Hast du es aus den Ports gebaut oder über das Paketmanagement installiert?

Rob
 
Ich habe es aus den Ports installiert (portmaster lang/php56). Ich hatte kurz erwogen, (wegen des Einsteigers) von vornherein auf pkg zu setzen, das aber wegen diverser ärgerlicher Standardkonfigurationen schnell wieder verworfen.
 
Zurück
Oben