Siedzę nad banalnym problemem i nie wiem o co chodzi. Wszyscy wiemy co to są ścieżki względne..
Ale jak się okazuje w require_once nie da się chyba ich używać a przynajmniej takiego zapisu
  1. <?php
  2. require_once('../../somefile.php');
  3. ?>

Zapis ten nie spowoduje wyjścia o dwa katalogi w górę i nie załaduje pliku. Why?


Przykład:

Mamy taki układ katalogów:
Kod
Lib
|
|-Database
|      |
|      |-Mysql
|      |     |-Mysql.class.php
|      |
|      |-Postgresql
|      |     |-Postgresql.class.php
|      |
|      |-Database.interface.php
|
|-index.php


Plik index.php
  1. <?php
  2. require_once('Database/Mysql/Mysql.class.php')
  3. (...)
  4. ?>


Plik Mysql.class.php
  1. <?php
  2. require_once('../Database.interface.php');
  3. class Mysql implements Database
  4. {
  5. }
  6. ?>



Plik Database.interface.php
  1. <?php
  2. interface Database
  3. {
  4. }
  5. ?>


W momencie wykonywania require_once('../Database.interface.php'); zostanie wywalony błąd :/

--------------------------------------------------------------------------------------

EDIT: Już wiem. Bo katalogiem źródłowym jest Lib. Ale i tak require_once dziwnie się zachowuje.
Załóżmy, że mamy taki układ katalogów:
Kod
Lib
|
|-Database
|      |
|      |-Mysql.class.php
|      |
|      |-Interface
|           |-Database.class.php
|      
|
|-index.php


Jeśli w pliku index.php zapiszemy:
  1. <?php
  2. require_once('Database/Mysql.class.php');
  3. ?>


a w pliku Mysql.class.php zapiszemy:
  1. <?php
  2. require_once('Interface/Database.class.php');
  3. ?>


to plik Database.class.php zostanie załadowany, pomimo tego, że katalogiem źródłowym jest lib a nie lib/Database! php sobie dołącza sam czyli pisząc: require_once('Interface/Database.class.php') php traktuje to tak jakbysmy napisali require_once('Database/Interface/Database.class.php') :/

Czy ktoś wie dlaczego? Troche to dziwne i może wprowadzać w błąd..