Frage

Wir haben ein Problem mit den PEAR Bibliotheken auf Windows von PHP.

Pear viele Klassen enthält, machen wir Gebrauch eines fairen wenige, von denen die Mail-Klasse in Mail.php gefunden ist. Wir verwenden PEAR auf dem Weg, anstatt den vollständigen expliziten Pfad zu einzelnen PEAR-Dateien bereitstellt:

require_once('Mail.php');

Statt:

require_once('/path/to/pear/Mail.php');

Dies verursacht Probleme in der Administrationsmodul des Geländes, wo es eine mail.php Datei (verwendet Mails an Benutzer zu senden). Wenn wir in einem administrativen Bildschirm, der eine E-Mail (wie zB die Benutzerverwaltung Bildschirm, und eine E-Mail neue zufällige Passwörter für die Benutzer erzeugen kann, wenn sie von der Mäßigung Warteschlange zugelassen sind) sendet, und wir versuchen, Mail.php schließen wir „zufällig“ Mail. php.

Ohne Änderung des vollständigen Pfad zum PEAR vorangestellt wird explizit die PEAR-Module erfordern installieren (Nicht-Standard, installieren Sie in der Regel PEAR auf Ihrem Weg ...) gibt es einen Weg, um PHP auf Windows zu erzwingen Dateien benötigen Fall sensitiv ?

Wir fügen den PEAR Pfad zur Include-Pfad selbst, haben so die Kontrolle über den Pfad um. Wir erkennen auch, dass wir Dateinamen verwenden sollten es vermeiden, die unabhängig von Fall mit PEAR Namen kollidieren, und in Zukunft so tun wird. Diese Seite jedoch (zu denen nicht einer Datei, sondern ein Controller), im Repository für einige Jahre gewesen ist, und Plugins speziell URLS erzeugt Links zu bieten / Umleitungen an dieser Seite in ihrer Verarbeitung.

  

(Wir unterstützen Apache, Microsoft IIS, Lighthttpd und Zeus, mit PHP 4.3 oder höher (einschließlich PHP5))

War es hilfreich?

Lösung

mit 2 Dateien mit dem gleichen Namen in dem Pfad enthalten ist keine gute Idee, Ihre Dateien umbenennen, so dass die Dateien, die Sie verschiedene Namen von Bibliotheken von Drittanbietern haben geschrieben. ohnehin für Ihre aktuelle Situation denke ich, durch die Reihenfolge der Pfade in Ihrem Weg ändernden gehören, können Sie dieses Problem beheben. PHP sucht die Dateien in den Include-Pfade, eins nach dem anderen. wenn die erforderliche Datei im Suchpfad gefunden wird, wird PHP für die Dateisuche stoppen. so in der Administration Ihrer Anwendung, wenn Sie die PEAR Mail-Datei enthalten sein sollen, statt der mail.php, die Sie geschrieben haben, Ihr Include-Pfad ändern, so dass die PEAR-Pfad vor dem aktuellen Verzeichnis ist. etwas tun, wie folgt aus:

<?php
  $path_to_pear = '/usr/share/php/pear';
  set_include_path( $path_to_pear . PATH_SEPARATOR . get_include_path() );
?>

Andere Tipps

Da es eine OS-Ebene Sache ist, ich glaube nicht, gibt es eine einfache Möglichkeit, dies zu tun.

Sie könnten versuchen, Ihren umfassen von include('Mail.php'); Wechsel include('./Mail.php');, aber ich bin nicht sicher, ob das auf einem Windows-arbeiten wird (nicht eine, die mit PHP zu testen, auf).

Wenn Sie PHP 4 verwenden, können Sie nutzen dieser Fehler. Aus das ist natürlich eine schmutzige Lösung ...

Oder Sie könnten nur Ihre mail.php Datei zu etwas umbenennen anderes ...

Ich bin ziemlich sicher, dieses Problem durch den NTFS-Code in dem Win32-Subsystem verursacht wird. Wenn Sie ein Ext2 Installable File System (IFS) verwenden, sollten Sie Groß- und Kleinschreibung auf diesem Laufwerk bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top