PHP-Datei vor allen anderen aufrufen

Alles, was den Apache betrifft, kann hier besprochen werden.

PHP-Datei vor allen anderen aufrufen

Postby scooterApache » 18. March 2013 10:29

Ich suche nach einer Möglichkeit, im angemieteten Webspace einer privaten Homepage eine PHP-Datei so auszuführen, dass sie immer als erste aufgerufen wird, egal, welche HTML-Datei vom Benutzer aufgerufen wird.

Wenn ich also index.html, info.html oder in diesen Seiten eine andere HTML-Datei meines Webspaces aufrufe, soll als erste die Datei VARS.PHP aufgerufen werden, die wichtige Variableneinstellungen vornimmt und dann zu der eigentlich aufgerufenen Datei weitergeleitet werden (welche die Angaben der PHP-Datei benötigt).

Geht das in der htaccess, und wie genau?

(Ich könnte natürlich einfach ein head-Snippet haben, dass die Variablenzuweisungen hat, und dieses Snippet mittels PHP in jeder HTML-Datei als erstes aufrufen. Aber dann müsste ich diesen Aufruf in jede HTML-Datei schreiben; vielleicht geht's auch einfacher?)
scooterApache
 
Posts: 6
Joined: 15. April 2011 15:14
Operating System: Windows 8 Pro (64Bit)

Re: PHP-Datei vor allen anderen aufrufen

Postby Altrea » 18. March 2013 11:12

scooterApache wrote:Geht das in der htaccess, und wie genau?

Du kannst per .htaccess und mod_rewrite Aufrufe auf eine andere Datei umschreiben, nur bringt dir das nichts, da deine html Datei dann immernoch nichts von den Werten deiner VARS.php Datei weiß.

scooterApache wrote:(Ich könnte natürlich einfach ein head-Snippet haben, dass die Variablenzuweisungen hat, und dieses Snippet mittels PHP in jeder HTML-Datei als erstes aufrufen. Aber dann müsste ich diesen Aufruf in jede HTML-Datei schreiben; vielleicht geht's auch einfacher?)

Der gängige Weg wäre einen Frontcontroller zu bauen, der alle Anfragen entgegen nimmt und dann, je nach Anforderung Ressourcen wie .html Dateien zur Verfügung stellt.
Das wäre also der umgekehrte Fall als bei deiner Lösung, dem FrontController müssen die Ressourcen bekannt gegeban werden.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: PHP-Datei vor allen anderen aufrufen

Postby scooterApache » 18. March 2013 12:06

Ja, ein Frontcontroller wäre eine Lösung, allerdings arbeiten noch andere mit dem Webspace, und die vergrätzt man mit so etwas ("Zuuu kompliziert!").

Als Lösung ist mir nur noch eingefallen, in der htaccess alle Anfragen nach HTML-Dateien auf die VARS.PHP umzuleiten. In dieser Datei nehmen ich dann die Variablenzuweisungen vor und anschließend in dieser Datei ein Aufruf wie

Code: Select all
<?php
 header("Status: 307 Temporary Redirect");
 header("Location: http://www.meinedomain.de/info.html");
 exit;
 ?>


In der htaccess kann ich doch etwas schreiben wie (Beispiel von woanders her):

RewriteEngine on
RewriteRule ^/(deutsch)/texte/(catherine).html$ /texte.php?sprache=$1&seite=$2


Und die an PHP übergebenen Parameter, z. B. die aufgerufene ursprüngliche Webseite, in den PHP-Redirect übergeben. Oder?
scooterApache
 
Posts: 6
Joined: 15. April 2011 15:14
Operating System: Windows 8 Pro (64Bit)

Re: PHP-Datei vor allen anderen aufrufen

Postby Altrea » 18. March 2013 13:13

scooterApache wrote:Ja, ein Frontcontroller wäre eine Lösung, allerdings arbeiten noch andere mit dem Webspace, und die vergrätzt man mit so etwas ("Zuuu kompliziert!").
[...]
RewriteEngine on
RewriteRule ^/(deutsch)/texte/(catherine).html$ /texte.php?sprache=$1&seite=$2


Und die an PHP übergebenen Parameter, z. B. die aufgerufene ursprüngliche Webseite, in den PHP-Redirect übergeben. Oder?

Was wiederum dem Konzept eines Frontcontrollers entspricht. Die index.php enthält (oder bekommt übergeben) alle Informationen, die zum Routing und Dispatching einer Ressource notwendig sind.

scooterApache wrote:Als Lösung ist mir nur noch eingefallen, in der htaccess alle Anfragen nach HTML-Dateien auf die VARS.PHP umzuleiten. In dieser Datei nehmen ich dann die Variablenzuweisungen vor und anschließend in dieser Datei ein Aufruf wie

Code: Select all
<?php
 header("Status: 307 Temporary Redirect");
 header("Location: http://www.meinedomain.de/info.html");
 exit;
 ?>

Variablenzuweisungen sind nach dem Redirect nichtmehr bekannt, also was soll das bringen? Da müsstest du schon heftigen Gebrauch von Session und/oder Cookies machen um die Informationen zu übertragen.
Das ist weder übersichtlich noch leicht wartbar, noch flexibel, noch erweiterbar.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: PHP-Datei vor allen anderen aufrufen

Postby Nobbie » 18. March 2013 15:17

Im Prinzip geht das um Welten einfacher, wobei es semantisch noch unsauber ist:

a) HTML Dateien werden normalerweise NICHT vom PHP Interpreter geparsed, d.h. einfach so ist das ganze Konzept noch nicht schlüssig. Entweder muss man die gewünschten Dateien index.html usw. in index.php umbenennen, oder man muss die Extension .html in die Liste aufnehmen, für die der PHP Interpreter gestartet wird. Wenn man wirklich will, dass IMMER PHP gestartet wird, kann man die zweite Lösung einbauen, sonst sollte man die Internet-Seite sauber aufbauen und die gewünschten Dateien nach *.php umbenennen.

b) wenn a) auf befriedigende Weise gelöst ist, gibt es eine ganz einfache PHP Direktive, die genau das gewünschte erfüllt und die heißt auto-prepend-file

Siehe http://www.php.net/manual/de/ini.core.p ... epend-file
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: PHP-Datei vor allen anderen aufrufen

Postby Altrea » 18. March 2013 16:01

Nobbie wrote:b) wenn a) auf befriedigende Weise gelöst ist, gibt es eine ganz einfache PHP Direktive, die genau das gewünschte erfüllt und die heißt auto-prepend-file

Siehe http://www.php.net/manual/de/ini.core.p ... epend-file

Vielen Dank Nobbie. Diese Direktive kannte ich nicht. Auch wenn mir kein Anwendungsfall einfällt, in dem ich mir vorstellen könnte diese Direktive selbst einmal zu verwenden, so lernt man zumindest jeden Tag hinzu :D
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: PHP-Datei vor allen anderen aufrufen

Postby scooterApache » 18. March 2013 16:37

@Nobbie

HTML Dateien werden normalerweise NICHT vom PHP Interpreter geparsed


In meiner htaccess steht bereits

Code: Select all
AddType application/x-httpd-php html htm


und aller PHP-Code in HTML-Dateien wird wie gewünscht geparset -- von XAMPP. Im echten Webspace bekomme ich die Aufforderung, zu speichern oder eine Anwendung zum Öffnen anzugeben. Was mache ich falsch?
scooterApache
 
Posts: 6
Joined: 15. April 2011 15:14
Operating System: Windows 8 Pro (64Bit)

Re: PHP-Datei vor allen anderen aufrufen

Postby Altrea » 18. March 2013 16:51

Wir können hier keinen Support für fremde Webhoster leisten.
Wende dich in solchen Fällen bitte an die Supportkanäle deines Webhosters.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: PHP-Datei vor allen anderen aufrufen

Postby scooterApache » 18. March 2013 19:35

Den Provider hab ich schon gefragt -- der fühlt sich nicht zuständig.

Muss ich was an meiner Konfiguration ändern, oder ist die htacess-Direktive doch ungeeignet?
scooterApache
 
Posts: 6
Joined: 15. April 2011 15:14
Operating System: Windows 8 Pro (64Bit)

Re: PHP-Datei vor allen anderen aufrufen

Postby Altrea » 18. March 2013 20:10

scooterApache wrote:Den Provider hab ich schon gefragt -- der fühlt sich nicht zuständig.

Dann bist du wohl komplett aufgeschmissen. Welche Dateitypen vom PHP-Interpreter geparst werden ist zu 100% eine Einstellung des Webservers (selbst wenn dies nur bedeutet, dass man per .htaccess noch Einfluss darauf nehmen kann).
Wenn sich selbst dein Webhoster für die Konfiguration des Webservers nicht zuständig zeigt, ja wer denn dann?
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: PHP-Datei vor allen anderen aufrufen

Postby Nobbie » 18. March 2013 23:23

scooterApache wrote:Den Provider hab ich schon gefragt -- der fühlt sich nicht zuständig.


Dann solltest Du den Provider wechseln. Oder am besten bestellst Du einen eigenen vServer, den kannst Du einrichten wie Du es brauchst. Kostet auch nicht die Welt.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

PHP-Datei vor allen anderen aufrufen

Postby scooterApache » 20. March 2013 10:59

Nachdem ich etliche Tipps aus dem Netz probiert habe, und keiner funktionierte, habe ich festgestellt, dass mein Provider (1&1) den htaccess-Eintrag so nicht mag. Auch die Provider-eigene Hilfestellung auf
http://hilfe-center.1und1.de/homepage-entwickeln-c82634/htaccess-c83883/haeufig-verwendete-htaccess-direktiven-a784801.html
half nicht -- weil sie unvollständig war, wie ich jetzt merkte.

Erst nachdem ich bei meinem Provider hartnäckig war, kam er mit der Lösung:

Code: Select all
AddType x-mapp-php6 .php .htm
AddHandler x-mapp-php6 .php .htm


Ich habe PHP 5.4.12 und deshalb muss es in der Direktive "php6" heißen und nicht "php5" (das kommt wohl daher, weil PHP 5.4 Neuerungen hat, die eigentlich erst in der 6er-Version kommen sollten).

Nachtrag:
Nachdem ich die Änderung auch in dem Subordner vornahm, in dem ich teste, sollte PHP auch hier korrekt ausgeführt werden, was es aber leider nicht tut. Hat jemand hier eine Idee?

Nachtrag 2:
Alles funktioniert -- ich hatte vergessen, die Dateien auf dem Server zu aktualisieren ... :oops:
Und vielen Dank an Nobbie! Die PHP-Direktive ist genau das, was ich suchte, und es funzt!
scooterApache
 
Posts: 6
Joined: 15. April 2011 15:14
Operating System: Windows 8 Pro (64Bit)

Re: PHP-Datei vor allen anderen aufrufen

Postby Nobbie » 20. March 2013 13:38

scooterApache wrote:Ich habe PHP 5.4.12 und deshalb muss es in der Direktive "php6" heißen und nicht "php5" (das kommt wohl daher, weil PHP 5.4 Neuerungen hat, die eigentlich erst in der 6er-Version kommen sollten).


Das ist aber dann die "1&1 offizielle Erklärung", denn eigentlich ist das Kappes. Die Namen dieser Handler sind frei wählbar und werden in der Serverkonfiguration festgelegt. Da hat 1&1 eben eigene Standards und meinetwegen denken die da an PHP6, wenn sie PHP5 schreiben, aber von PHP oder von Apache ist das NICHT vorgegeben.

Du hast nur eben das Problem, dass Du keine Einsicht in die Serverkonfiguration hast und deswegen bist Du natürlich auf die Mithilfe des Providers angewiesen. Bei Xampp auf Deinem Rechner bist Du selbst der Provider bzw. Admin, da kannst Du natürlich tun und lassen wie Du willst. Wie schon gesagt, auch wenn es jetzt funktioniert, wenn Du mindestens einen vServer betreibst, dann bist Du der Herr im Hause, da kannst Du alles selbst einstellen wie Du lustig bist. Die sind ein wenig teurer als normale Webhosting Pakete, fängt meistens bei 8,90€ pro Monat an (und die sind schon ordentlich ausgestattet, der reicht in jedem Fall für den kleinen Mann).
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 229 guests