per Apache Konfiguration bei vhost an PHP Variable übergeben

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

per Apache Konfiguration bei vhost an PHP Variable übergeben

Postby nobodz » 04. January 2009 23:02

Ich weiß, vielleicht etwas kurios aber für den bezweckten Einsatz genau das richtige.
Es geht darum PHP Scripte unterschiedlichen Websites zu Verfügung zu stellen und diese .php Dateien nur ein einziges mal im Dateisystem abzulegen.
Die einzelnen Websites werden per vhost in der Apache Konfiguration abgebildet. Dateien die Website spezifisch sind werden per Alias aus externen Verzeichnissen eingebunden.
Das hat den Vorteil das man ganz fluxx ne neue Website einrichten kann.

Ist es Möglich in der Apache Konfiguration an PHP Variabeln oder Konstanten zu übergeben, bzw zu definieren.
Ähnlich den $_ENV oder $_SERVER.

Vielleicht hat der ein oder andere so etwas ebenfalls bereits versucht und hat da Ideen für mich.

kruze Infos:
openSuse (sonst eigentlich Debian, aber hoster 'zwingt' mich dazu, sollte wohl aber egal sein)
Apache 2 neuste stabile Version
PHP 5 neuste stabile Version
nobodz
 
Posts: 2
Joined: 04. January 2009 22:47

Re: per Apache Konfiguration bei vhost an PHP Variable übergeben

Postby Xardas der Dunkle » 04. January 2009 23:49

im $_SERVER array steht eig. schon alles was du brauchst, nämlich pfad ($_SERVER['REQUEST_URI']) und hostadresse($_SERVER['HTTP_HOST']).
Und entsprechend nach Adresse und Pfad zeigst du eben eine andere Seite an.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: per Apache Konfiguration bei vhost an PHP Variable übergeben

Postby nobodz » 19. January 2009 16:23

Wegen der etwas kuriosen Konstellation ist das Ziel wohl noch nicht so ganz herausgekommen.

Die unterschiedlichen Websites bzw. Systeme haben alle einen eigenen vhost in der Apache Konfiguration. Dort werden auch die zugehörigen Domains zugeteilt.
Der Stammordner ist aber bei allen vhosts der selbe, weil dieser alle ausführbaren PHP Dateien enthält.

Jede Website / System hat seine eigene MySQL Datenbank sowie Benutzer Passwort. Und genau dies möchte ich in der vHost Konfiguration übergeben. So brauch nicht nochmal ermittelt werden welches System zu welcher Datenbank, Benutzer Passwort gehört und ein System kann auch 'ausbrechen'.

Die Vhost Datei des Apache wird automatisiert von einem Script erstellt, der Datenbank Vollzugriff hat. Die Vhosts sollen aber keinen Vollzugriff erhalten.
nobodz
 
Posts: 2
Joined: 04. January 2009 22:47

Re: per Apache Konfiguration bei vhost an PHP Variable übergeben

Postby Nobbie » 19. January 2009 17:05

Man kann ja in VirtualHost via der SetEnv-Anweisung eine Umgebungsvariable setzen, die in Scripten dann abgefragt werden kann. Achtung "böse Falle": der Name der Umgebungsvariablen muss neu(!) sein, existierende Variablen werden nicht überschreiben.

Beispiel:

Code: Select all
<VirtualHost *>
DocumentRoot /srv/www/htdocs
ServerName server1
SetEnv ConfigDir /usr/data/server1/
...


Und im PHP-Script (oder Perl, ich mache jetzt PHP-Syntax):

Code: Select all
<?php
      $configdir = $_ENV['DataDir'];
      $configfile = 'config.php';

      $configpath = $datadir.$configfile;

      include($configpath);
...
?>


Usw. - da gibt es die verschiedensten Möglichkeiten. Man könnte es natürlich auch automatisieren, denn $_SERVER['SERVER_NAME'] ist ja vom VirtualHost abhängig. Da kann man auch gleich so schreiben:

Code: Select all
<?php
      $configdir = '/usr/data/'.$_SERVER['SERVER_NAME'];
      $configfile = 'config.php';

      $configpath = $datadir.'/'.$configfile;

      include($configpath);
...
?>


Ist das nicht genau das, was Du brauchst?
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 26 guests