• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

problem mit file_exists() !!

hello

Schöner von Nordhausen
Registriert
02.07.06
Beiträge
327
hallo zusammen

ich arbeite seit einer woche an einem kleinen projekt, lokal auf meinem macbook pro auf dem ich den apachen server mit php und mysql habe. hier funktioniert alles einwandfrei und ohne problem. doch wen ich das ganze auf meinen host lade funktioniert nichts mehr.

hier mal der code der index.php datei:
Code:
<?php

include 'variables.php';

$body[1]='includes/body/standart.inc';

// das array $body ist eigentlich in der datei variables.php

include 'includes/functions.php';
include 'header.html';

echo '<body>';

include 'includes/navigation.inc';

if (isset($_GET['body'])) {
    
    if (file_exists($body[$_GET['body']])) {
        include $body[$_GET['body']];
    } else {
        include 'includes/body/error.inc';
    }
} else {
    include 'includes/body/standart.inc';
}

echo '</body>';
echo '</html>';


?>
jetzt das problem:

bei der prüfung "file_exists($body[$_GET['body']])" geht die abfrage in den else bereich obwohl die datei vorhanden ist. könnt ihr mir sagen an was das liegt? ich kann es mir vorallem nicht erklähren weil es lokal auf dem computer funktioniert...

danke schon im voraus

manuel
 
Hat die Datei u.U. fehlerhafte Rechte auf dem Webserver? Sind die Benutzer des Servers und der Datei die gleichen oder hängen sie zumindest in der gleichen Gruppe auf dem Webserver?
 
also die rechte sollten eigentlich stimmen, da der zugriff auf die datei eigentlich funktioniert, also wen ich die datei so "include 'includes/body/standart.inc';" einbnde funktioniert es auch.
und auf das zweite überfragst du mich, ich bin nicht so server erfahren, das mache in der regel nicht ich, ich habe einfach mein host auf den ich mit meinen benutzer daten zugreife und meine dateien drauf lade.
(bin auch in php und mysql ein neuling, habe bis vor drei wochen alles in reinem xhtml gemacht)
 
dein code ist korrekt, es kann nur daran liegen dass die variable in den include dateien überschrieben wird oder noch wahrscheinlicher dass der pfad nicht stimmt.

bei der get variable sollte natürlich 1 stehen. ca so *.php?body=1
 
die pfade stimmen alle, sonst würde das ganze auf meinem localen apachen sever nicht funktionieren, oder sehe ich das falsch?

hier das komplette array:
Code:
$body[1]='includes/body/standart.inc';
$body[2]='includes/body/standart.inc';
$body[3]='includes/body/standart.inc';
$body[4]='includes/body/standart.inc';
$body[5]='includes/body/standart.inc';
$body[6]='includes/body/gallery.inc';

und sonst werden die daten niergens überschrieben, habe nochmal alles durchkontrolliert
 
Ist vielleicht der PHP-Safe-Mode aktiviert? Dann kann man fast gar nichts mit Dateien machen. Ob file_exists davon betroffen ist, weiß ich zwar nicht genau, aber ich denke schon.
 
wen das so ist, wo kan ich das sehen? bzw wie kann ich das deaktivieren?
 
phpinfo()
Deaktivieren kannst du es nur, wenn dein Provider das zulässt - dann entweder per Administrationsinterface (Confixx...) oder per php.ini.
 
Was ist denn der Inhalt von $_GET['body']?

Übrigens: Spricht etwas gegen die Nutzung eines PHP-RAD-Frameworks? Da hat man diese ganzen Probleme nicht.
 
also wen ich das richtige in phpinfo() ausgelesen habe ist der php-safe-mode aktiviert, im anhang mit einem bild (zum sicher gehen, dass ich das richtige genommen habe).

de inhalt von $_GET['body'] ist eine zahl, bei meinen versuchen bis jetzt immer 1.

PHP-RAD-Frameworks? kann mir jemand erklähren was das ist? bzw wie das funktioniert?

danke schonmal für die hilfe bis jetzt!!
 

Anhänge

  • Bild 3.png
    Bild 3.png
    16,3 KB · Aufrufe: 78
Frag mal deinen Anbieter, welche PHP-Version er einsetzt. Und zwar aus folgendem Grunde:

In PHP 5.1.4 and 5.2CVS file_exists() function returns true, when file
exists, but is inaccessible due to safe mode restrictions. Other php
versions work as documented.

Siehe.
 
PHP-RAD-Frameworks? kann mir jemand erklähren was das ist? bzw wie das funktioniert?
RAD steht für Rapid-Application-Development. Das sind Frameworks, die die ganzen Basis-Funktionen, die man so braucht, bereitstellen, damit man sich nicht zum hundertsten Mal das Rad neu erfinden muss.

Populäre RADs sind CakePHP, symfony (sehr komplex) und CodeIgniter.
 
Frag doch mal bei deinem Provider ob sie den PHP Safe_Mode auf OFF schalten. Die ON Einstellung verursacht nämlich nichts als Probleme.