Neue PHP Endung + anderer Content Type

Neue PHP Endung + anderer Content Type

am 27.09.2007 12:36:16 von Jonas Werres

Hallo,
ich würde gerne eine neue Endung für PHP-Interpretation registrieren und
das Ergebnis als text/plain ausliefern lassen.
Wie fange ich das an? Habe mich bei diesen Sachen bisher immer auf die
Distribution verlassen, die den Standard ja korrekt setzt.

Gruß

Re: Neue PHP Endung + anderer Content Type

am 27.09.2007 12:52:21 von Joerg Behrens

Jonas Werres schrieb:
> Hallo,
> ich würde gerne eine neue Endung für PHP-Interpretation registriere=
n und=20

Haengt vom verwendeten Webserver und vom Typ der PHP Installation hab.=20
Sofern es ein Apache ist und PHP als Modul laeuft hast du irgendwo ein


AddType application/x-httpd-php .php .php3 .php4 .php5
AddType application/x-httpd-php-source .phps


Anschliessend den Apache neu starten.

> das Ergebnis als text/plain ausliefern lassen.
> Wie fange ich das an? Habe mich bei diesen Sachen bisher immer auf die =

> Distribution verlassen, die den Standard ja korrekt setzt.

Hmm.... Über die php.ini wird festgelegt das per Default ein text/html =

gesendet wird. Das einfachste waere diesen Header in deinem Script zu=20
ueberschreiben in dem du ein
header('Content-Type: text/plain');
...
?>

machst.

Gruss
Joerg

--=20
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de

Re: Neue PHP Endung + anderer Content Type

am 27.09.2007 13:31:04 von Jonas Werres

>
> AddType application/x-httpd-php .php .php3 .php4 .php5
> AddType application/x-httpd-php-source .phps
>

Ja, das kenne ich. Nur konnte ich mit dieser COntent-Type(-ähnlichen?)
Angabe nichts anfangen.

> Hmm.... Über die php.ini wird festgelegt das per Default ein text/html
> gesendet wird. Das einfachste waere diesen Header in deinem Script zu
> ueberschreiben in dem du ein
> > header('Content-Type: text/plain');
> ....
> ?>
Das hatte ich befürchtet. Hintergrund ist der, dass ein Programmierkurs
angeboten wird, der sowohl PHP wie Java behandelt und zwar die
Grundlagen noch zusammen in PHP (Schleifen, If-Bedingungen, was ist eine
Funktion etc.).
Ich hatte mir nun gedacht, einfach die Endung .kurs registrieren zu
können und damit dann Ausgaben zu machen, in denen man sich keine Sorgen
über die Anzeige von Whitespaces machen muss.

Re: Neue PHP Endung + anderer Content Type

am 27.09.2007 14:01:12 von Niels Braczek

Jonas Werres schrieb:

> Ich hatte mir nun gedacht, einfach die Endung .kurs registrieren zu=20
> können und damit dann Ausgaben zu machen, in denen man sich keine Sor=
gen=20
> über die Anzeige von Whitespaces machen muss.

Spontane Idee:
auto_prepend eines Skriptes, das mittels __FILE__ die eigene Endung
prüft und ggf. den passenden Header sendet.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Neue PHP Endung + anderer Content Type

am 27.09.2007 14:46:02 von Jonas Werres

> Spontane Idee:
Super Idee

> auto_prepend eines Skriptes, das mittels __FILE__ die eigene Endung
> prüft und ggf. den passenden Header sendet.
Aber die korrekte Variable wäre hier wohl $_SERVER["PHP_SELF"].
__FILE__ enthält das prepend-File.

Danke!

Re: Neue PHP Endung + anderer Content Type

am 27.09.2007 15:10:00 von Jonas Werres

Bzw. $_SERVER['SCRIPT_FILENAME'], noch besser.

Hier ist mein Script, falls es jemandem hilft, bzw. jemand
Verbesserungsvorschläge hat (Z.B. wie ich es ohne file oder weitere
PECL-Installationen ohne file_get_contents an das Charset komme). Ist
hier zwar nicht mehr ganz ontopic, aber da ja kein Problem besteht,
verzichte ich mal auf ein F'Up nach .misc.

/**
* Überprüft, ob das Script die Endung .kurs hat und setzt
* in diesem Fall einen whitespace-freundlichen Content-type
* und richtiges Character-Encoding
*/

if(".kurs"==substr($_SERVER['SCRIPT_FILENAME'],-5))
{
$charset=mb_detect_encoding(
file_get_contents($_SERVER['SCRIPT_FILENAME']),
'UTF-8,ISO-8859-15,ISO-8859-1');
header('Content-Type: text/plain; charset='.strtolower($charset));
}
?>

Re: Neue PHP Endung + anderer Content Type

am 28.09.2007 15:03:17 von oliver.graetz

Joerg Behrens schrieb:
> Jonas Werres schrieb:
>> Hallo,
>> ich würde gerne eine neue Endung für PHP-Interpretation registrier=
en und=20
>=20
> Haengt vom verwendeten Webserver und vom Typ der PHP Installation hab. =

> Sofern es ein Apache ist und PHP als Modul laeuft hast du irgendwo ein
>=20
>
> AddType application/x-httpd-php .php .php3 .php4 .php5
> AddType application/x-httpd-php-source .phps
>

>=20
> Anschliessend den Apache neu starten.
>=20
>> das Ergebnis als text/plain ausliefern lassen.
>> Wie fange ich das an? Habe mich bei diesen Sachen bisher immer auf die=
=20
>> Distribution verlassen, die den Standard ja korrekt setzt.
>=20
> Hmm.... Über die php.ini wird festgelegt das per Default ein text/htm=
l=20
> gesendet wird.

Laut http://de.php.net/manual/en/ini.php kann man diese Einstellung
überall ändern, also auch in einer .htaccess Datei oder der
Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel so i=
n
einer .htaccess ändern:


AddType application/x-httpd-php .huba


php_value default_mimetype "text/plain"


OLLi

--=20
Bender: "There's someone you know!"
[Futurama 101]

Re: Neue PHP Endung + anderer Content Type

am 28.09.2007 16:09:59 von Jonas Werres

> Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel so in
> einer .htaccess ändern:
>
>
> AddType application/x-httpd-php .huba
>

>
> php_value default_mimetype "text/plain"
>


..htaccess: php_value not allowed here

Ist aber nicht so tragisch. So kann ich auch gleich das
Characterencoding passend setzen. Dann müssen Kinder, die gerade lernen,
dass man mit echo Text ausgibt, nicht gleichzeitig noch drauf achten,
dass sie das auch mit Uteefacht speichern.

Re: Neue PHP Endung + anderer Content Type

am 28.09.2007 19:09:39 von Joerg Behrens

Oliver Grätz schrieb:
> Joerg Behrens schrieb:
>> Jonas Werres schrieb:
>>> Hallo,
>>> ich würde gerne eine neue Endung für PHP-Interpretation registrie=
ren und=20
>> Haengt vom verwendeten Webserver und vom Typ der PHP Installation hab.=
=20
>> Sofern es ein Apache ist und PHP als Modul laeuft hast du irgendwo ein=

>>
>>
>> AddType application/x-httpd-php .php .php3 .php4 .php5
>> AddType application/x-httpd-php-source .phps
>>

>>
>> Anschliessend den Apache neu starten.
>>
>>> das Ergebnis als text/plain ausliefern lassen.
>>> Wie fange ich das an? Habe mich bei diesen Sachen bisher immer auf di=
e=20
>>> Distribution verlassen, die den Standard ja korrekt setzt.
>> Hmm.... Über die php.ini wird festgelegt das per Default ein text/ht=
ml=20
>> gesendet wird.
>=20
> Laut http://de.php.net/manual/en/ini.php kann man diese Einstellung
> überall ändern, also auch in einer .htaccess Datei oder der

htaccess geht nur wenn PHP als Modul und nicht ueber CGI laueft. Wenn =

letzteres der Fall ist dann ist dem Apache das PHP ja unbekannt und er=20
kenn die Configurationsoptionen nicht.

Selbst wenn es ein Modul ist dann muss es AllowOverride noch auf ein=20
entsprechend hohen Level gesetzt werden.... und das will man normal nicht=


Gruss
Joerg

--=20
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de

Re: Neue PHP Endung + anderer Content Type

am 28.09.2007 19:14:23 von Joerg Behrens

Jonas Werres schrieb:
>> Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel s=
o in
>> einer .htaccess ändern:
>>
>>
>> AddType application/x-httpd-php .huba
>>

>>
>> php_value default_mimetype "text/plain"
>>

>=20
> .htaccess: php_value not allowed here

AllowOveride Config in der httpd.conf fuer das Directory setzen. Bin mir =

mit "config" nicht ganz sicher... must du mal in der Doku nachlesen.=20
Allerdings wenn du Zugriff auf die httpd.conf hast dann geht auch


....
....
php_value default_mimetype "text/plain"



Alle PHP Sachen aus "kurse" werden dann als text/plain ausgeliefert.


Gruss
Joerg

--=20
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de

Re: Neue PHP Endung + anderer Content Type

am 29.09.2007 14:39:18 von oliver.graetz

Jonas Werres schrieb:
>> Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel s=
o in
>> einer .htaccess ändern:
>>
>>
>> AddType application/x-httpd-php .huba
>>

>>
>> php_value default_mimetype "text/plain"
>>

>=20
> .htaccess: php_value not allowed here

Ich selbst habe genau die obigen Zeilen in einer .htaccess getestet, und
zwar mit einem Apache 2.0.x und PHP 5.2.x. Wenn es nicht erlaubt ist,
dann liegt das an einem expliziten Verbot seitens der Config und nicht
daran, dass es prinzipiell nicht geht.

OLLi

--=20
"Moment mal: Die Mehrheitseignerin, der Geschäftsführer und der
PR-Manager von Kerima Moda malen gemeinsam Ostereier an? Na das nenn'
ich grenzdebil."
[ViB]