Debian Webserver mit VirtualHosts, kein Zugang zu Unterverzeichnissen mit php !

Bangerrang

Member
Hi,

So, ich habe 2 Homepages auf einer Debian - Kiste als webserver ( mit Apache, MySQL, PHP ).
Folgendes ist nun mein Problem :

Ich habe eine Seite erstellt mit Datenbankzugriff und die Nutzerdaten wie user, host, passw und db habe ich in einer config.php im selbigen Verzeichnis abgelegt. Mit meiner einen Homepage hat das wunderbar geklappt nach einem apache restart. Mit meiner zweiten Homepage allerdings klappt der Zugriff auf die Datenbank jedoch nur wenn ich die Nutzerdaten hard-codiert in die aufrufende php-Seite schreibe.
Soweit so gut, hätte damit auch keine Probleme, allerdings möchte ich auch eine Gallery implementieren die auf Unterverzeichnisse zugreift und da hab ich keine Chance wenn ich nicht auf das Unterverzeichnis zugreifen kann.

Ausschnitt DB-Connect mit Fehlermeldung :

$db = mysql_connect(host,user,passw)
or die ("Datenbank-Verbindung klappt nicht !");
mysql_select_db(datenbank, $db)
or die ("Datenbank-Select mit Datenbank klappt nicht !");

Ausgegeben wird "Datenbank-Select mit Datenbank klappt nicht !" !!!

Wo stehen vielleicht die Rechteverteilung auf andere Files und Directories für die unterschiedlichen User ???

P.S.: Beide Homepages haben jeweils einen eigenen User-Account auf dem webserver + virtualHost usw.

danke schonmal

Bg
 
Bangerrang schrieb:
Hi,

So, ich habe 2 Homepages auf einer Debian - Kiste als webserver ( mit Apache, MySQL, PHP ).
Folgendes ist nun mein Problem :

Ich habe eine Seite erstellt mit Datenbankzugriff und die Nutzerdaten wie user, host, passw und db habe ich in einer config.php im selbigen Verzeichnis abgelegt. Mit meiner einen Homepage hat das wunderbar geklappt nach einem apache restart. Mit meiner zweiten Homepage allerdings klappt der Zugriff auf die Datenbank jedoch nur wenn ich die Nutzerdaten hard-codiert in die aufrufende php-Seite schreibe.
Soweit so gut, hätte damit auch keine Probleme, allerdings möchte ich auch eine Gallery implementieren die auf Unterverzeichnisse zugreift und da hab ich keine Chance wenn ich nicht auf das Unterverzeichnis zugreifen kann.

Ausschnitt DB-Connect mit Fehlermeldung :

$db = mysql_connect(host,user,passw)
or die ("Datenbank-Verbindung klappt nicht !");
mysql_select_db(datenbank, $db)
or die ("Datenbank-Select mit Datenbank klappt nicht !");

Ausgegeben wird "Datenbank-Select mit Datenbank klappt nicht !" !!!

Wo stehen vielleicht die Rechteverteilung auf andere Files und Directories für die unterschiedlichen User ???

P.S.: Beide Homepages haben jeweils einen eigenen User-Account auf dem webserver + virtualHost usw.

danke schonmal

Bg
Bist Du mit Deiner Frage da nicht besser aufgehoben:
http://www.debianforum.de/forum/

Debian hat auf Grund der Sicherheitseinstellungen so manche Tücke. Z.B. folgt der Apache nur Links mit seinen Rechten, nichtmal den mit den alleinigen Rechten von root.
 
Bangerrang schrieb:
Ich habe eine Seite erstellt mit Datenbankzugriff und die Nutzerdaten wie user, host, passw und db habe ich in einer config.php im selbigen Verzeichnis abgelegt.


AAAAAAAAAAAAAAaaaaaaaaaaaarrrrrrrrrrgggggggghhhhh !
 
evtl wäre ich dort besser beraten.

Habs aber erstmal hier eingestellt, da ich bisher immer sehr zufrieden war auch mit meinen BSD Problemen.

Sehr kompetente Leute hier.

Wenn hier aber nix kommt muss ichs wohl unter debianforen probieren.
 
troll schrieb:
AAAAAAAAAAAAAAaaaaaaaaaaaarrrrrrrrrrgggggggghhhhh !

Ich versteh nicht ganz dein Problem !

Ist es nicht besser, wenn ich die Nutzerdaten bei mehreren php-files zum Beispiel benötige, und die bei einer Änderung so (z.B. config.php mit Nutzerdaten) nur einmal ändern muss.
Anstatt durch sämtliche Files zu gehen und den gesamten Code nach den Nutzerdaten zu durchsuchen um die Nutzerdaten zu ändern !!!

Aber geholfen hast du mir damit leider auch nicht TROLL !
 
Ok, da ich mich eben danebenbenommen hab, sollte ich auch was sinnvolles dazu schreiben.

Die Zugangsdaten gehören nicht in ein Verzeichnis, dass per Browser aufrufbar ist(DOKUMENT_ROOT).

Zu deinem Problem. Anscheinend konnte die Verbindung hergestellt werden, aber es konnte nicht in die DB gewechselt werden.
Bau dir ein Testscript, was wieder die Zugangsdaten einliest und lasse sie dir einfach per echo ausgeben.(Natürlich nicht die echten Daten)

Da die Verbindung funktioniert, tippe ich auf einen einfachen Fehler in der Variablen für den datenbanknamen.
Schreib mal dazu, wie du den code einliest. Einfach mit include() ?
Oder lass mal den entsprechenden Code sehen...
Als Abbruch, falls was fehlschlägt benutze mal mysql_error() anstatt einer selbstgeschriebenen Fehlermeldung, um den DB Server auch mal zu Wort kommen zu lassen.

CU

Martin
 
hab ein Testscript geschrieben in dem ich mal kurz die Nutzerdaten ausgeb, nachdem ich sie included habe, mit include("config.php"); hat aber nicht geklappt.
echo "user : $user - $host - $database";
ausgegeben hat er :
user : - -

Hab auch mal in der error.log nachgesehen, die hat folgendes gebracht :

PHP Warning: main(): open_basedir restriction in effect. File(config.php) is not within the allowed path(s): (/usr/virtualweb/zz.de) in /usr/virtualweb/xy.de/html/testpage/xy-mainFolder/xy.php on line 12
PHP Warning: main(config.php): failed to open stream: Operation not permitted in /usr/virtualweb/xy.de/html/testpage/xy-mainFolder/xy.php on line 12
PHP Warning: main(): Failed opening 'config.php' for inclusion (include_path='.') in /usr/virtualweb/xy.de/html/testpage/xy-mainFolder/xy.php on line 12


P.S.: die einzigste File in meinem document_root ist die index.htm sonst sind alle Files in Unterordner und die haben Verzeichnisschutz.

schätze das Problem liegt beim Apache, aber keine Ahnung wo ?!?
 
Bangerrang schrieb:
PHP Warning: main(): open_basedir restriction in effect. File(config.php) is not within the allowed path(s): (/usr/virtualweb/zz.de)

Genau hier liegt das Problem.

<Directory /deindocroot>
php_admin_value open_basedir /deindocroot
</Directory>

in der httpd.conf mit einem anschliessenden restart des Servers sollte das Prob aus der Welt schaffen.

CU

Martin
P.S. kontrollier bitte die Zugriffsrechte für den mysqld. Anscheinend kann man sich ohne Passwort und Usernamen mit dem Server verbinden.
 
:D so und wieder ein glücklicher User !!

THANKS A LOT !!!!

Das open_basedir wars wohl (falscher Verweis), aber nicht in der httpd.conf sondern in der php.ini unter dem jeweiligen virtualHost.
Ausserdem hab ich Vogel in sämtlichen php.ini-Files nachgesehen nur nicht in dem unter meinem virtualHost ! :ugly:

Aber hab dann auch gleich deinen nächsten Tip ausprobiert, aber ohne user und passw gehts nicht !
 
Zurück
Oben