Allora, nel mio pc di sviluppo utilizzo le junction per fare si che le mie librerie php siano disponibili ai vari siti web che sviluppo, pur essendo realmente conservate in una sola cartella, così che il debugging che faccio su un sito si rifletta automaticamente anche sugli altri.
In soldoni ho una situazione del genere:
d:\Webserver\httproot\ è la root pubblica del web server
d:\Webserver\httproot\_libs\v3 è la cartella che contiene realmente le mie libs
d:\Webserver\httproot\nomesito.it\ è la home pubblica ddi nomesito.it
d:\Webserver\httproot\nomesito.it\inc\cfg è la cartella che contiene le configurazioni di nomesito.it
d:\Webserver\httproot\nomesito.it\admin\ è una JUNCTION a d:\Webserver\httproot\_libs\v3 che, appunto, mi permette di recuperare le mie libs.
Ora, qual'è il problema?
Se io nel codice delle mie lib cerco di includere le configurazioni del sito, lo dovrò fare così:
require("../inc/cfg/config.php");
cosa che, fino alle versioni 5.2.x di php funzionava egregiamente: essendo io in un file richiamato per esempio con d:\Webserver\httproot\nomesito.it\admin\index.php, la mia cartella corrente ( . ) era d:\Webserver\httproot\nomesito.it\admin\, e il percorso
d:\Webserver\httproot\nomesito.it\admin\../inc/cfg/config.php
veniva risolto da php come:
d:\Webserver\httproot\nomesito.it\inc/cfg/config.php
che mi portata correttamente al mio file di config di nomesito.it.
Dalla 5.3 in poi, lo stesso percorso viene risolto come:
d:\Webserver\httproot\nomesito.it\admin\../inc/cfg/config.php
che diventa:
d:\Webserver\httproot\_libs\v3\../inc/cfg/config.php
che naturalmente diventa:
d:\Webserver\httproot\_libs\inc/cfg/config.php
CHE NATURALMENTE NON PORTA A UN BEL NIENTE!
Ho cercato di segnalare al team di php che la cosa non ha tanto senso secondo me, visto che se io scrivo quel path in una finestra di esplora risorse e poi clicco su vai vengo portato alla stessa dir in cui mi portava php 5.2, ma mi hanno risposto che il comportamento giusto è quello ATTUALE (quello di 5.3 per capirci) e che non lo modificheranno.
Io nel frattempo ho risolto usando la dirname invece che il .. così che mi funzioni comunque, ma mi sembra una follia!
Che ne pensate?