expertenaustausch > comp.lang.* > comp.lang.php.misc

Levin Alexander (06.06.2004, 02:17)
Hi,

Ich versuche gerade Content-Negotiation von Apache mit PHP zu verbinden
und komm' nicht weiter.

Ist es möglich, mit PHP auf die von Apache generierten Header zu reagieren
und sie zu verändern?
es gibt "apache_response_headers()" das ist aber erst gefüllt, wenn die
Header gesendet wurden; zu diesem Zeitpunkt kann ich sie aber nicht mehr
ändern.

Ich versuche etwa dies zu tun (fiktives, nicht funktionierendes Beispiel):

$apache_headers = $apache_response_headers(); // hier müssen die
HTTP-Header bereits gesendet sein
if ($apache_headers["Content-Type"] == "text/html")
{
header("Content-Location: $foo"); // Error: Headers already sent
};

Ein bisschen mehr Hintergrund:

Teil des Problems ist wahrscheinlich, das ich alle Dateien durch dasselbe
PHP-Skript leite. Es ist in der .htaccess so eingebunden:

| ForceType application/x-httpd-php
| php_value auto_prepend_file /example/include.php
(.htaccess)

include.php initialisiert mit 'ob_start("callback");' einen Output-Buffer,
dessen Callback dann abhängig von der verhandelten Resource
unterschiedliche Dinge tun soll. Unter anderem HTTP-Header setzen.

[Programmversionen: Apache 1.3.27, PHP 4.3.4]

Habt ihr Tipps?

Viele Grüße,
Levin

[xpost und f'up beachten]
Andreas Labres (06.06.2004, 11:19)
Levin Alexander wrote:
> Ist es möglich, mit PHP auf die von Apache generierten Header zu reagieren
> und sie zu verändern?
> es gibt "apache_response_headers()" das ist aber erst gefüllt, wenn die
> Header gesendet wurden; zu diesem Zeitpunkt kann ich sie aber nicht mehr
> ändern.


Ich denke, die Antwort auf die Frage hast Du Dir selbst gegeben...

Mir fiele auch kein Szenario ein, wo ich das brauchen könnte. Ich setze die
HTTP-Header, die ich haben will. Das weiß ich deterministisch vorher.

Servus, Andreas
Joachim Zobel (25.06.2004, 22:37)
On Sun, 06 Jun 2004 02:17:57 +0200, Levin Alexander wrote:
> Ich versuche gerade Content-Negotiation von Apache mit PHP zu verbinden
> und komm' nicht weiter.
> Ist es möglich, mit PHP auf die von Apache generierten Header zu
> reagieren und sie zu verändern?
> es gibt "apache_response_headers()" das ist aber erst gefüllt, wenn die
> Header gesendet wurden; zu diesem Zeitpunkt kann ich sie aber nicht mehr
> ändern.


D.h. Du willst Apache die Content-Negotiation machen lassen und dann
hinterher korrigierend eingreifen?

Warum? Evtl. lässt sich Dein Problem ja anders lösen.

Gruß,
Joachim
Levin Alexander (25.06.2004, 23:56)
Joachim Zobel <jzobel> wrote:

>> Ist es möglich, mit PHP auf die von Apache generierten Header zu
>> reagieren und sie zu verändern?


> D.h. Du willst Apache die Content-Negotiation machen lassen und dann
> hinterher korrigierend eingreifen?


Fast. Ich möchte alle vom Apache ausgelieferten Daten durch dasselbe
PHP-Skript jagen. Das Skript muss aber wissen, ob es gerade ein Bild oder
eine HTML-Datei parst.

Ich wollte in PHP nicht Apaches Mimetyp-Erkennung nachbauen, sondern auf
die bereits ermittelten Daten zugreifen. Das scheint nicht möglich zu
sein.

> Warum? Evtl. lässt sich Dein Problem ja anders lösen.


Ja. Ich geb' einfach allen Dateien passende Dateiendungen und schau mir
die in PHP an.

Andere Header generiere ich nicht mehr mit Apache, sondern mit PHP, da
weiß ich, was ich geschrieben hab'.

Dankeschön und Viele Grüße,
Levin
Ähnliche Themen