Domanda

Abbiamo un problema utilizzando il PEAR librerie su Windows da PHP.

La pera contiene molte classi, stiamo facendo uso di qualche fiera, una delle quali è la classe di Posta elettronica trovati in Mail.php.Usiamo PERA il percorso, piuttosto che fornire l'intero percorso esplicito ai singoli PERA file:

require_once('Mail.php');

Piuttosto che:

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

Questo provoca problemi nel modulo di amministrazione del sito, dove c'è un mail.php file utilizzati per l'invio di mail per gli utenti).Se siamo in una amministrazione dello schermo che invia una e-mail (come l'utente nella schermata di amministrazione in grado di generare e inviare per email una nuova password casuali per gli utenti quando siano approvate dalla coda di moderazione) e si cercherà di includere Mail.php noi "accidentalmente" includono mail.php.

Senza cambiare anteporre il percorso completo del PEAR install esplicitamente che richiedono la PERA moduli (non-standard, in genere si installa PERA per il tuo percorso...) c'è un modo per far rispettare PHP su Windows per richiedere i file di caso-in modo sensibile?

Stiamo aggiungendo la PERA percorso il percorso di inclusione noi stessi, in modo da avere il controllo su ordine del percorso.Siamo anche consapevoli che dobbiamo evitare di utilizzare nomi di file che si scontrano con PERA nomi indipendentemente dal caso, e in futuro saranno in grado di farlo.In questa pagina, invece, (che non è un file di inclusione, ma un controller), è stato nel repository per alcuni anni, e i plugin in particolare la generazione di URL per fornire link/reindirizza a questa pagina, nella loro elaborazione.

(Sostegno Apache, Microsoft IIS, LightHTTPD e Zeus, utilizzando PHP 4.3 o versioni successive (tra cui PHP5))

È stato utile?

Soluzione

avere 2 file con lo stesso nome nel percorso di inclusione non è una buona idea, rinominare il file in modo che i file che hai scritto hanno nomi diversi da librerie di terze parti.in ogni caso per la vostra situazione attuale penso che cambiando l'ordine dei percorsi nel percorso di inclusione, si può risolvere questo problema.PHP ricerca per i file nei percorsi di inclusione, uno per uno.quando il file si trova nel percorso di inclusione, PHP smettere di cercare il file.quindi, nella sezione amministrazione dell'applicazione, se si desidera includere la PERA file di Posta elettronica, invece di mail.php che hai scritto, modificare il percorso di inclusione così la PERA percorso è prima la directory corrente.fare qualcosa di simile a questo:

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

Altri suggerimenti

Come è un OS a livello di cosa, non credo che c'è un modo semplice per fare questo.

Si potrebbe provare a cambiare il tuo includere include('Mail.php'); per include('./Mail.php');, ma io non sono sicuro se che lavorerà su una macchina Windows (non avendo uno con PHP per test).

Se si utilizza PHP 4, è possibile usufruire di questo il bug.Fuori corso che è una brutta soluzione...

Oppure si può semplicemente rinominare il mail.php file di qualcos'altro...

Io sono abbastanza certo che questo problema è causato dal codice NTFS nel sottosistema Win32.Se si utilizza un filesystem di tipo Ext2 IFS (Installable File System), si dovrebbe ottenere il caso di sensibilità su tale unità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top