0

からのPEARライブラリの使用に問題があります。WindowsPHP

Pearには多くのクラスが含まれていますが、かなりの数のクラスを使用しています。そのうちの1つはにあるMailクラスMail.phpです。個々のPEARファイルへの完全な明示的なパスを提供するのではなく、パスでPEARを使用します。

require_once('Mail.php');

それよりも:

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

mail.phpこれにより、ファイル(ユーザーにメールを送信するために使用される)があるサイトの管理モジュールで問題が発生します。電子メールを送信する管理画面(モデレートキューから承認されたときにユーザーに新しいランダムパスワードを生成して電子メールで送信できるユーザー管理画面など)を使用していて、Mail.php「誤って」mail.phpを含めようとした場合。

PEARモジュールを明示的に要求するPEARインストールへのフルパスを追加するように変更せずに(非標準、通常はパスにPEARをインストールします...)、WindowsでPHPを強制してファイルを大文字と小文字を区別して要求する方法はありますか?

インクルードパスにPEARパスを自分で追加しているので、パスの順序を制御できます。また、大文字と小文字を区別せずにPEAR名と衝突するファイル名を使用しないようにする必要があることも認識しており、将来的にはそうする予定です。ただし、このページ(インクルードファイルではなくコントローラー)は数年前からリポジトリにあり、プラグインは特にURLを生成して、処理中にこのページへのリンク/リダイレクトを提供します。

(PHP 4.3以降(PHP5を含む)を使用して、Apache、Microsoft IIS、LightHTTPD、およびZeusをサポートします)

4

4 に答える 4

3

これはOSレベルのものなので、これを行う簡単な方法はないと思います。

インクルードをからに変更してみることができますがinclude('Mail.php');include('./Mail.php');それがWindowsボックスで機能するかどうかはわかりません(テストするPHPを備えたボックスがありません)。

于 2008-09-15T14:55:10.113 に答える
1

インクルード パスに同じ名前の 2 つのファイルを含めることはお勧めできません。ファイルの名前を変更して、作成したファイルがサード パーティのライブラリとは異なる名前になるようにします。とにかく、現在の状況では、インクルード パスのパスの順序を変更することで、これを修正できると思います。PHP は、インクルード パス内のファイルを 1 つずつ検索します。必要なファイルがインクルード パスで見つかると、PHP はファイルの検索を停止します。したがって、アプリケーションの管理セクションで、作成した mail.php の代わりに PEAR メール ファイルをインクルードする場合は、インクルード パスを変更して、PEAR パスが現在のディレクトリの前になるようにします。次のようにします。

<?php
  $path_to_pear = '/usr/share/php/pear';
  set_include_path( $path_to_pear . PATH_SEPARATOR . get_include_path() );
?>
于 2008-09-15T19:25:16.203 に答える
0

PHP 4を使用している場合は、このバグを利用できます。もちろん、それは厄介な解決策です...

または、mail.phpファイルの名前を別の名前に変更することもできます...

于 2008-09-15T14:57:30.683 に答える
0

この問題は、Win32サブシステムのNTFSコードが原因であると確信しています。Ext2インストール可能ファイルシステム(IFS)を使用する場合は、そのドライブで大文字と小文字を区別する必要があります。

于 2008-09-17T11:20:44.823 に答える