Newsgroup: it.comp.www.php
Titolo: include() di un percorso completo

Ho un problema ma non capisco se riguarda la configurazione di PHP o di 
Apache.
Mi trovo sotto W2k ed ho la cartella root delle pagine html in "d:\wwwroot".
In questa directory ho le cartelle moduli/, admin/ e nav/
Se da un documento in admin/ faccio una:
include("/moduli/mod_conn.php");
mi vien fuori l'errore:
Warning: include(/moduli/mod_conn.php) [function.include]: failed to 
open stream: No such file or directory in D:\wwwroot\admin\blank_top.php 
on line 3
Warning: include() [function.include]: Failed opening 
'/moduli/mod_conn.php' for inclusion (include_path='.;C:\php5\pear') in 
D:\wwwroot\admin\blank_top.php on line 3
Se invece scrivo:
include("../moduli/mod_conn.php") risalendo quindi la directory, tutto 
funziona.
C'è da dire che nel file php.ini ho settato:
doc_root = ".;d:\wwwroot"
Quindi il problema secondo voi dov'è? PHP o Apache?
Spero di non essere OT e di ricevere presto una risposta.
In ogni caso, grazie a chiunque si sia interessato al mio post :)
-- 
Quando noi ignoranti eravamo di più, tutto era più bello...
(A. Celentano)
Per rispondermi in privato, togli prima l'immondizia dalla testa ;)

 Quindi il problema secondo voi dov'è? PHP o Apache?
Nella chiamata include().
Il percorso può essere assoluto o relativo, in quest'ultimo caso è
relativo al percorso corrente di esecuzione o all'include_path
specificato nel php.ini.
Tu nella chiamata errata specifichi un percorso assoluto (comincia con
lo slash) che php non trova. Nella seconda chiamata specifichi un
percorso relativo corretto.

Se io ho la document_root in "d:\wwwroot\", e specifico questa directort 
sia nella configurazione di apache che in quella di php (nel php.ini), 
il percorso assoluto non fa riferimento a "d:\wwwroot\" come radice?
Quindi dicendo "/moduli/mod_conn.php" in realtà non faccio riferimento a 
"d:\wwwroot\moduli\mod_conn.php"?


 "d:\wwwroot\moduli\mod_conn.php"?
non è come pensi.
Ti consiglio di usare include relativi, MA nel modo seguente per motivi 
di portabilità:
include (dirname(__FILE__)."/percorso_relativo/file.php");
ciao
Alesi_27

 "d:\wwwroot\moduli\mod_conn.php"?
No, fai riferimento ad un percorso assoluto stile unix che naturalmente
non esiste.

 non esiste.
Ma allora perchč se faccio header("location: /index.php") funziona?
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello...


 Ma allora perchè se faccio header("location: /index.php") funziona?
Perchè è un'altra cosa. L'argomento di include è un percorso fisico,
mentre quello è un url.

 
in una url "/" mi rappresenta la doc_root del sito
a livello di filesystem "/" indica la root

 a livello di filesystem "/" indica la root
Ora comincio a capire :)
Quindi include vede il mio percorso assoluto come riferimento al 
filesystem e non alla doc_root?
Ma c'č un modo per dire a PHP di usare come root la mia doc_root 
piuttosto che il fs?
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello...
(A. Celentano)
Per rispondermi in privato, prima togli "l'immondizia dalla testa" :)

 piuttosto che il fs?
fai prima a fare una cosa tipo
define(BASE_URL, "/var/www/cippolippo");
in un file di configurazione che includi in tutte le pagine
e poi
include(BASE_URL."/nome_del_file.php");
cosi se sposti il sito da un provider all'altro, basta che cambia una 
singola variabile.

 include(BASE_URL."/nome_del_file.php");
Ma cosi' non metti il file di configurazione all'interno della 
documentroot e quindi mondoleggibile?
~omar