Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problema con require_once

4 views
Skip to first unread message

g4b0

unread,
Jan 16, 2008, 9:24:57 AM1/16/08
to
Ciao a tutti,
ho un problema un po' particolare..

Ho un webservice con una struttura di directory di questo tipo:

/ <--------- root di batch.servizio.com
|-class
|- Classe1.php
|- Classe2.php
|- Classe3.php
|-include
|- config.inc.php
|- include.php
|- include2.php
|-online <--------- root di online.servizio.com
|- index.php
|- file1.php
|- file2.php
|-utility
|- utility1.php
|- utility2.php
|- utility3.php
|
|-filebatch1.php
|-filebatch2.php
|-filebatch3.php

Ho inoltre due virtualhost:
batch.servizio.com (root == /)
online.servizio.com (root == /online)

Il mio problema sta nelle inclusioni dei file!

http://batch.servizio.com/utility/utility1.php:
<?php
require_once '../class/Classe1.php';

/*codice*/
?>

http://batch.servizio.com/class/Classe1.php:
<?php
if ( strstr( $_SERVER['SERVER_NAME'], 'batch' ) !== false )
require_once 'include/config.inc.php';
else
require_once '../include/config.inc.php';

/*codice*/
?>

Il problema è che se richiamo http://batch.servizio.com/utility/utility1.php
ottengo (giustamente) il seguente errore:

Warning: require_once(include/config.inc.php) [function.require-once]:
failed to open stream: No such file or directory
in /path/del/servizio/public_html/class/Class1.php on line 3

Fatal error: require_once() [function.require]: Failed opening
required 'include/config.inc.php'
(include_path='.:/usr/share/php:/usr/share/pear')
in /path/del/servizio/public_html/class/Class1.php on line 3


In ultimo non posso usare path globali perchè lo stesso codice esiste in 3
diverse posizioni, develop, staging e production, che vengono rsyncate ad
ogni modifica. Uso il file /include/config.inc.php per gestire i parametri
diversi per ciascun ambiente, ma non riesco ad usarlo per specificare il
path!!

Sto impazzendo, spero di essere stato chiaro, anche se ne dubito O_o

--
g4b0, linux user n. 369000
http://gabo.homelinux.com

Filippo Toso - Creative Park

unread,
Jan 16, 2008, 9:36:45 AM1/16/08
to
g4b0 ha scritto:

> Il mio problema sta nelle inclusioni dei file!

Non ho letto tutto il testo del tuo messaggio ma mi sono fermato a
quanto hai scritto qui sopra.

Per evitare qualsiasi problema di include ti consiglio di utilizzare
sempre un metodo di include come il seguente, in questo modo le
inclusioni saranno immuni da cambiamenti dell'include_path, da
inclusioni nidificate etc:

<?php
require_once(dirname(__FILE__) . '/include.php');
?>

Tenendo presente che dirname(__FILE__) ti permette di far riferire
l'inclusione al path del file in cui viene scritto il codice.
Ovviamente puoi spostarti tra una directory e l'altra con un codice
come questo:

<?php
require_once(dirname(__FILE__) . '/../include.php');
require_once(dirname(__FILE__) . '/subfolder/include.php');
?>

--
Vuoi distribuire il tuo sito web su CD/DVD?
Prova http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: http://www.creativepark.it/stage/

g4b0

unread,
Jan 16, 2008, 10:08:50 AM1/16/08
to
Filippo Toso - Creative Park wrote:

> g4b0 ha scritto:
>
>> Il mio problema sta nelle inclusioni dei file!
>
> Non ho letto tutto il testo del tuo messaggio ma mi sono fermato a
> quanto hai scritto qui sopra.
>
> Per evitare qualsiasi problema di include ti consiglio di utilizzare
> sempre un metodo di include come il seguente, in questo modo le
> inclusioni saranno immuni da cambiamenti dell'include_path, da
> inclusioni nidificate etc:
>
> <?php
> require_once(dirname(__FILE__) . '/include.php');
> ?>
>
> Tenendo presente che dirname(__FILE__) ti permette di far riferire
> l'inclusione al path del file in cui viene scritto il codice.
> Ovviamente puoi spostarti tra una directory e l'altra con un codice
> come questo:
>
> <?php
> require_once(dirname(__FILE__) . '/../include.php');
> require_once(dirname(__FILE__) . '/subfolder/include.php');
> ?>
>

Fantastico!! E' proprio quello che cercavo!!! Ho sempre trovato soluzioni
cervellotiche, questa è davvero semplice e funzionale..

Grazie mille

0 new messages