2011-03-06 23 views
5

Questo problema non è ancora risoltofile assoluto Percorso

Un video tutorial PHP sto seguendo è la costruzione di un file chiamato initialize.php in cui si sta usando il PHP predefiniti costante Directory_Separator e quindi la definizione di un site_root. La root_root è il percorso file assoluto (non il percorso del server Web) per PHP per individuare i file necessari. Egli ci ha dato il seguente codice

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

    defined('SITE_ROOT') ? null : 
    define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 

Io parto dal presupposto il percorso del file sul suo computer è root/utenti/Kevin/siti/photogallery

io non sto costruendo il sito sul mio computer, ma direttamente on line . Non so quale percorso file inserire invece.

Come ha sottolineato che non è il percorso del server web, ma piuttosto il percorso del file system, cosa invece metto. Solo il nome di dominio come questo.

define('SITE_ROOT', DS. 'www.example.com'); 

Non desidera il percorso del server Web ma i file si trovano online? quindi non capisco

UPDATE

Il video tutorial utilizzato il seguente codice

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT') ? null : 
define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes'); 

Ho usato questo codice:

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 
defined('LIB_PATH') ? null : define('LIB_PATH',SITE_ROOT.DS.'includes'); 

ho ricevuto questo messaggio di errore

require_once(/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php): failed to open stream: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11 Fatal error: require_once(): Failed opening required '/hsphere/local/home/c263430/quoralist.com/includes/includes/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11

UPDATE utilizzando le 3 modifiche di seguito da experimentX, così come il seguente

define('SITE_ROOT', DS.'hsphere'.DS.'local'.DS.'home'.DS.'c263430'.DS.'quoralist.com'); 

ho sempre avuto il messaggio di errore

Warning: require_once(LIB_PATH/config.php): failed to open stream: No such file or directory in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11 Fatal error: require_once(): Failed opening required 'LIB_PATH/config.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/c263430/quoralist.com/includes/initialize.php on line 11

Inoltre,

+0

Aggiungere il link del video = O – Joseadrian

+0

è non è in linea, mi dispiace – Leahcim

+0

Micahel Ho aggiornato la risposta –

risposta

10

Come su

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

echo SITE_ROOT; 

Invece di define('SITE_ROOT', 'www.domain.com') si dovrebbe define('SITE_ROOT', realpath(dirname(__FILE__)).

www.domain.com è l'url di base (del sito) mentre realpath(dirname(__FILE__)) è il percorso file assoluto di FILE in cui è definito. Utilizzando questo percorso, puoi impostare una ROOT FOLDER per il tuo sito.

Per esempio: si cannnot fai unlink('www.example.com\img1.jpg') eliminare img1

Si dovrebbe fare unlink(SITE_ROOT.DS.'img1.jpg');

Analogamente per move_uploaded_file o qualsiasi altra funzione di directory o file. Ad esempio, i file vengono spostati e cancellati dal computer server (dato che lo script php viene eseguito nel server), quindi è necessario il percorso file assoluto.

Utilizzando questo percorso assoluto, è possibile accedere alla cartella e accedere ai file sul server.

[UPDATE]

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 

defined('SITE_ROOT') ? null : 
    define ('SITE_ROOT', DS.'Users'.DS.'kevin'.DS.'Sites'.DS.'photo_gallery'); 

Anche se non proprio mac, il web-root è Users/kevin/Sites/ su Mac e il Users/kevin/Sites/photogallery è la radice del sito.

Il tutor lo sa, così sta facendo questo. Ma potremmo non sapere questo quando il nostro progetto è caricato nel webserver, quindi

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

Sarebbe il più appropriato.

E per quanto riguarda DS, è solo un COSTANTE (DIRECTORY_SEPARATOR), che è definito perché DIRECTORY_SEPARATOR sarebbe troppo lungo per scrivere. vale a dire

SITE_ROOT'.DIRECTORY_SEPARATOR.'Users'.DIRECTORY_SEPARATOR.'kevin'.DIRECTORY_SEPARATOR.'Sites'.DIRECTORY_SEPARATOR.'photo_gallery' 

Quindi, lo definiscono prima di definire sito radice

defined('DS')? null: define('DS', DIRECTORY_SEPARATOR); 
defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__))); 

Come il tutorial è fatto su MAC DIRECTORY_SEPARATOR è /. E il campione viene fatto su localhost, il tutor conosce il percorso del file assoluto del suo server web in modo che sta facendo

[ERRORE: UPDATE]

È ottenuto questo errore perché la definizione di questo su includes/initialize.php presuppone che la vostra SITE_ROOT è yourwebroot/yourproject/includes dove deve essere stato yourwebroot/yourproject/includes.

Ci sono due modi, un modo è

di mettere initialize.php in yourwebroot/yourproject

E l'altro modo è

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS); 

O

defined('SITE_ROOT')? null: define('SITE_ROOT', DS.'..'.DS.realpath(dirname(__FILE__))); 

(non sono sicuro ma uno di loro dovrebbe funzionare)

anche provare questo

defined('SITE_ROOT')? null: define('SITE_ROOT', '/../'.realpath(dirname(__FILE__))); 
+0

grazie mille. Sono un principiante. potresti spiegare un po 'di più. Devo sostituire il mio vero nome di dominio con il tuo esempio? come SITE_ROOT = www.example.com (dirname (__ FILE__))? o come lo farei. molto apprezzato se puoi aiutare di più. Modifica la tua risposta per mostrarmi esattamente dove va il dominio. – Leahcim

+0

@Michal qui va ... dopo 5 min –

+0

quindi non devo mai usare il mio vero nome di dominio www.example.com? sono quelle parole "realpath" "dirname" ecc. termini PHP che in qualche modo prelevano il mio nome di dominio? – Leahcim

1

dispiace, ho la risposta per le immagini non visualizzano

in photograph.php, basta rimuovere DS

public function image_path() { 
    return $this->upload_dir.$this->filename; 
} 

linea di lavoro è:

defined('SITE_ROOT')? null: define('SITE_ROOT', realpath(dirname(__FILE__)).DS."..".DS); 

Grazie!

Problemi correlati