Warum bin ich nicht in der Lage, eine Variable zu verwenden, in meiner erfordern oder Erklärung enthält auf XAMPP?

StackOverflow https://stackoverflow.com/questions/1210179

  •  06-07-2019
  •  | 
  •  

Frage

Während einige alte PHP-Skripte Reinigung Ich habe einige seltsame Verhalten bemerkt mit erfordern / include-Anweisungen, wenn ich versuche, Variablen zu verwenden.

Auf dem Live-Server, der folgende Code funktioniert gut ..

<?php
$test = "http://localhost/elearning/trunk/mypage.php";
require "$test";
?>

.. aber auf meiner XAMPP-Installation ((Basispaket) Version 1.6.7) Ich erhalte die folgenden Fehler:

Warning: require () [function.require]: URL Dateizugriff wird in der Serverkonfiguration in C deaktiviert: \ Dokumente und Einstellungen \ Benutzername \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ Stamm \ test.php on line 22

Warning: require ( http: //localhost/elearning/trunk/mypage.php ) [function.require]: failed to open stream: auf \ Dokumente und Einstellungen \ Benutzername \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ trunk \ test.php kein geeignetes Wrapper in C gefunden werden konnte Zeile 22

Fatal error: require () [function.require]: Fehler beim Öffnen erforderlich ‚ http: // localhost /elearning/trunk/mypage.php '(include_path =' .; C: \ Dokumente und Einstellungen \ Benutzer \ Desktop \ xampp-win32-1.6.7 \ xampp \ php \ pear \ ') in C: \ Dokumente und Einstellungen \ Benutzername \ Desktop \ xampp-win32-1.6.7 \ xampp \ htdocs \ elearning \ trunk \ test.php on line 22

Wenn ich kopieren + einfügen http: //localhost/elearning/trunk/mypage.php (direkt aus dem Fehler) in meinen Browser, mypage.php Lasten. Ist das ein Fehler in meiner Konfiguration, oder meinen Ansatz?

War es hilfreich?

Lösung

Sie können keine Pfade verwenden, die mit http: // beginnen auf einigen Servern wegen der Sicherheit. Was Sie wollen, anstatt zu verwenden ist ein Verzeichnispfad.

Sie können Ihren aktuellen Verzeichnispfad erhalten, indem etwas wie
tun echo $_SERVER['DOCUMENT_ROOT'];

das wird Sie Ihren Verzeichnispfad aus dem Stammordner des Servers. Das ist der Weg, den Sie verwenden möchten, include / Sachen benötigen.


Wenn Sie das nicht ganz verstanden haben, versuchen Sie dies.

Es gibt zwei Arten von Pfaden:

World Wide Web Pfade:
http://example.com/directory/file.php

Server Verzeichnispfade:
/ Home / usr / www / site / html /

Der Server-Verzeichnis Pfad, in dem Sie Ihre Dateien auf dem Server der Festplatte befinden. Ähnlich wie der Festplatte Ihres Computers ist es ändert sich nie, wenn Sie die Dateien zu verschieben. Auf der anderen Seite, das World Wide Web Pfad (die jeder nutzt Ihre Website zugreifen) auf Basis ändern, was Domain, die Sie verwenden, in dem das Dokument Wurzel zeigt, Mod Rewrites und vieles mehr.

Hinweis: Das Document Root ist das oberste Verzeichnis, das den Server dient Dateien aus. Also, wenn Sie index.php in Ihrem Dokument Wurzel haben, würde es so im Web auftauchen: http://example.com/index.php .

Wenn PHP für eine Datei sucht, verwendet es den Server Verzeichnispfad, weil es auf dem Server ausgeführt wird. Wenn Javascript, die vom Anwender-Computer ausgeführt wird, eine Datei suchen will, verwendet es den Wide Web Pfad Welt darauf zugreifen, weil es nicht vom Server zugreift.

Ich hoffe wirklich, dass es irgendwo in, etwas Sinn.

Andere Tipps

versuchen erfordern "./mypage.php" nicht das ganze genaue Verzeichnis

PHP ist nicht klug genug zu wissen, dass Sie aus dem gleichen Server sind einschließlich der URL-Notation wie das verwenden, so dass er denkt, dass Sie Dateien von einem separaten Server greifen (was gefährlich sein kann).

Ihre Serverkonfiguration wird diese externen Dateien (erkennbar durch die Fehlermeldung „URL Dateizugriff wird in der Serverkonfiguration deaktiviert“), um nicht zuzulassen geladen, so dass es versagt.

Da Sie auf dem gleichen Server sind, können Sie einfach relative Pfade verwenden, wie:

require_once 'mypage.php'

Sie keinen Pfad so verwenden ... einen relativen oder absoluten Pfad verwenden.

Beispiel

require 'mypage.php'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top