2017-05-04 3 views
0

Ich habe ein Problem. Ich möchte gleichzeitig einen lokalen Server (WAMP) und einen Online-Server (000webhost) verwenden. Jetzt gibt es ein Problem mit meinen Dateipfaden. Ich kann normale Pfade wie (../contact.php) nicht benutzen, weil ich PHP Include-Dateien verwende und der Pfad dann anders sein wird, weil ich die Datei über die ganze Seite einschließe.Arbeite mit Pfaden auf localserver und normalserver

Nun wollte ich absolute Pfade wie (/main/includes/header.inc.php) verwenden Aber der Stammordner auf dem Online-Server und lokalen Server sind unterschiedlich, so dass auch nicht funktioniert.

Gibt es irgendwelche Lösungen, die ich verwenden kann?

Jelmer

+0

ist WAMP du dev e Umwelt und 000webhost Ihre Produktion? Ich versuche nur, die Verbindung zwischen den 2 Servern zu erarbeiten –

+0

Der Grund, warum ich sie beide benutze, ist, weil ich offline arbeiten will, damit ich die Unterschiede sofort sehen kann. Und ich möchte es manchmal auf den Server hochladen, weil ich zusammenarbeite und die Ergebnisse zeigen möchte. –

Antwort

0

Stellen Sie eine Web-Root-Verzeichnis Konstante ROOT, dass Sie Ihre Dateipfade verwenden können, laden. Für jeden Server setzen Sie diesen entsprechend auf seinen Pfad. Stellen Sie sicher, dass die Datei bei jeder Anfrage am Anfang der ersten Datei geladen wird.

<?php 
define('ROOT', `/var/www/html/site`); 
... 

jetzt Ihre Dateien mit den konstanten

include ROOT . '/directory/file.php'; 

Offensichtlich konstant eingestellt unterschiedlich für jeden Server laden.

Sie könnten Ihre define() auch in eine if-Anweisung einfügen.

<?php 
if($_SERVER['SERVER_NAME'] === 'localhost'){ 
    define('ROOT','/wamp/dir/'); //obviously not your actual dir 
}else{ 
    define('ROOT','/online/dir/'); //obviously not your actual dir 
} 

UPDATE

bessere Idee könnte Umgebungsvariablen statt conts Beusing.

Einstellung CONST auf jeder Seite ist ein bisschen langweilig. Ich habe diesen Beitrag gefunden, in dem erläutert wird, wie eine Umgebungsvariable in der .htaccess festgelegt wird. Auf diese Weise müssen wir es nur einmal einstellen und können in allen Dateien darauf zugreifen.

zB:

//.htaccess 
SetEnv ROOT /var_www/html/site/ 

nun in alle meine .php Dateien mit diesem diesen Wert erhalten Ich kann:

<?php 
include getenv('ROOT'); . '/directory/file.php'; 

Kredit:

store constant variable on server via .htaccess

+0

Also, wenn ich dich richtig verstehe (ich bin ein startender Programmierer) muss ich eine Konstante auf den Root-Pfad setzen. So etwas wie eine if-Anweisung, wo geprüft wird, ob der Benutzer auf localhost oder 000webhost steht. Und setzt die Konstante nach diesem Server? Dann muss ich die Konstante vor jedem Dateipfad setzen? –

+0

Vielen Dank! Aber wo finde ich diesen Post? –

+0

@JelmerDekker Tut mir leid, ich war auf meinem Handy und konnte den Kommentar nicht richtig schreiben. Siehe meine aktualisierte Antwort für alternative (wahrscheinlich bevorzugte) Methode –