Webserverconfig Problem mit './' in php

tigion

Aktives Mitglied
Thread Starter
Dabei seit
21.06.2006
Beiträge
1.570
Reaktionspunkte
388
Hallo, ich knobbel momentan an einen Problem, welches ich mir nicht erklären kann und zwar folgendes:

An welcher Konfigurationsdatei bzw. Einstellung könnte es liegen, wenn unter php keine Befehle mit include/require mehr funktionieren, wenn diese eine Dateiangabe beinhalten mit vorangestelltem './' ?
Dubioser weise, geht es bei einem anderen User auf dem gleichen Server :confused:

Kurz gesagt:

include('datei.inc.php') ... funktioniert
include('./datei.inc.php') ... geht nicht :(

Code:
$ php -v
PHP 5.2.0 (cli) (built: Jan 21 2007 21:37:11)

Vielleicht hat ja jemand einen Tipp für mich ... :)

Edit: Müsste php nicht automatisch erkennen, das Dateiangaben mit oder ohne vorangestelltem './' sich auf das aktuelle Verzeichnis beziehen?
 
Zuletzt bearbeitet:
Eine Möglichkeit, die ich bei mir immer wieder feststelle:

Ich gebe von Zeit zu Zeit die externen Dateien nicht mit dem Relativen Pfad zu der Urspurngsdatei, also die Datei, die aufgerufen wird, sondern zu der Datei, wo das require() drin steht an. Das klappt so freillich nicht.

Vielleicht liegts einfach da dran? :)

gruß
Lukas
 
Daran liegt es leider nicht, Urspungsdatei und Includedatei liegen beide im gleichen Pfad.

Ich hab mal einen kleinen Testfall gemacht und zwei Dateien in einem Testverzeichnis angelegt:

Datei index.php:

PHP:
<?php
echo "Test: include('index_part.inc.php') ... ";
$value=0;
include('index_part.inc.php');
if ($value == 1) {
  echo "true<br/>";
} else {
  echo "false<br/>";
};
echo "<br/>";
echo "Test: include('./index_part.inc.php') ... ";
$value=0;
include('./index_part.inc.php');
if ($value == 1) {
  echo "true<br/>";
} else {
  echo "false<br/>";
};
?>

Datei index_part.inc.php:

PHP:
<?php
$value=1;
?>

Die Ausgabe beim Aufruf der index.php im Webbrowser müsste eigentlich beidemale 'true' bringen, bringt aber mir unerklärlicherweise bei './' ein false.

Code:
Test: include('index_part2.inc.php') ... true

Test: include('./index_part2.inc.php') ... false

:confused:

Edit: Im Errorlog steht dazu folgendes:

Code:
PHP Warning:  include() [<a href='function.include'>function.include</a>]:
Failed opening './index_part.inc.php' for inclusion
(include_path='.:/usr/pkg/lib/php') in
/*****/public_html/test/index.php on line 13

Also sucht php Angaben mit './' nicht im aktuellen Pfad sondern in include_path :confused:
 
Zuletzt bearbeitet:
in include_path sucht er nur alles was er im aktuellen (oder reltiv angegeben pfad) nicht findet. dort kannst du also extensions isntallieren, die von mehreren PHP projekten auf deinem server verwendet werden.
PEAR wird dort beispielsweise meistens untergebracht.
 
Ja ich weis, deswegen wundert es mich ja woran es liegen kann, dass er relative Pfadangaben mit './' nicht im aktuellen Pfad sondern include_path sucht.

Ich finde auch keine Einstellung welche dieses Verhalten beeinflusst bzw. provoziert :(
 
Zurück
Oben Unten