Neue PHP Endung + anderer Content Type
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
Jonas Werres schrieb:
> Hallo,
> ich würde gerne eine neue Endung für PHP-Interpretation registriere=
n und
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
<Ifmodule mod_php5.c>
AddType application/x-httpd-php .php .php3 .php4 .php5
AddType application/x-httpd-php-source .phps
</IfModule>
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.... =DCber 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
<?php
header('Content-Type: text/plain');
=2E...
?>
machst.
Gruss
Joerg
--
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
> <Ifmodule mod_php5.c>
> AddType application/x-httpd-php .php .php3 .php4 .php5
> AddType application/x-httpd-php-source .phps
> </IfModule>
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
> <?php
> 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
Jonas Werres schrieb:
> Ich hatte mir nun gedacht, einfach die Endung .kurs registrieren zu
> können und damit dann Ausgaben zu machen, in denen man sich keine Sor=
gen
> ü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
--
| 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
> 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
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.
<?php
/**
* Ü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
Joerg Behrens schrieb:
> Jonas Werres schrieb:
>> Hallo,
>> ich würde gerne eine neue Endung für PHP-Interpretation registrier=
en und
>
> 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
>
> <Ifmodule mod_php5.c>
> AddType application/x-httpd-php .php .php3 .php4 .php5
> AddType application/x-httpd-php-source .phps
> </IfModule>
>
> 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.... =DCber die php.ini wird festgelegt das per Default ein text/htm=
l
> 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:
<Ifmodule mod_php5.c>
AddType application/x-httpd-php .huba
</IfModule>
<Files "*.huba">
php_value default_mimetype "text/plain"
</Files>
OLLi
--
Bender: "There's someone you know!"
[Futurama 101]
Re: Neue PHP Endung + anderer Content Type
> Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel so in
> einer .htaccess ändern:
>
> <Ifmodule mod_php5.c>
> AddType application/x-httpd-php .huba
> </IfModule>
> <Files "*.huba">
> php_value default_mimetype "text/plain"
> </Files>
..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
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
>> 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=
>>
>> <Ifmodule mod_php5.c>
>> AddType application/x-httpd-php .php .php3 .php4 .php5
>> AddType application/x-httpd-php-source .phps
>> </IfModule>
>>
>> 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
>>> Distribution verlassen, die den Standard ja korrekt setzt.
>> Hmm.... =DCber die php.ini wird festgelegt das per Default ein text/ht=
ml
>> 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
=2Ehtaccess 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
kenn die Configurationsoptionen nicht.
Selbst wenn es ein Modul ist dann muss es AllowOverride noch auf ein
entsprechend hohen Level gesetzt werden.... und das will man normal nicht=
=2E
Gruss
Joerg
--
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
Jonas Werres schrieb:
>> Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel s=
o in
>> einer .htaccess ändern:
>>
>> <Ifmodule mod_php5.c>
>> AddType application/x-httpd-php .huba
>> </IfModule>
>> <Files "*.huba">
>> php_value default_mimetype "text/plain"
>> </Files>
>
> .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.
Allerdings wenn du Zugriff auf die httpd.conf hast dann geht auch
<Directory /path/to/example.com/htdocs/kurse >
....
....
php_value default_mimetype "text/plain"
</Directory>
Alle PHP Sachen aus "kurse" werden dann als text/plain ausgeliefert.
Gruss
Joerg
--
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
Jonas Werres schrieb:
>> Apache-Config. Somit lässt sich der Standard-Mimetype zum Beispiel s=
o in
>> einer .htaccess ändern:
>>
>> <Ifmodule mod_php5.c>
>> AddType application/x-httpd-php .huba
>> </IfModule>
>> <Files "*.huba">
>> php_value default_mimetype "text/plain"
>> </Files>
>
> .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
--
"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]