4

PHP/C# Soap Service プロジェクトに取り組んでおり、以前は動作していましたが、IIS での実行に問題があります。

ASMX ファイルまたは WSDL ファイルに移動しようとすると、IIS エラーが発生します。

HTTP エラー 500.0 - ISAPI フィルター "C:\php\php5isapi.dll" で LoadLibraryEx を呼び出す内部サーバー エラーが失敗しました

php5isapi.dll は、エラーで指定された場所にあり、IIS 内の isapi フィルターに追加されます。標準の.phpファイルが機能するため、PHPが正常に機能していることはわかっていますが、PHPではないため、ASMX/WSDLファイルがphp5isapi dllにアクセスする理由がわかりません。SOAP サービスは、C# ASMX Web サービスにあります。

これは、アプリケーション プールで 32 ビット アプリケーションを有効にした場合にのみ発生します。そうでない場合、DLL が正しい形式ではないことを示す ASP 例外がスローされるため、これは true である必要があります。

Mono の下の Linux で問題なく動作するため、実際のサービスが正常に動作することはわかっています。

ご協力いただきありがとうございます。

4

3 に答える 3

3

これは同じ問題のようです。 https://bugs.php.net/bug.php?id=39163

「FreakTrap at gmail dot com」では、次の解決策が提案されています。

スニーカー 05 がアプリケーション プールの 32 ビット設定を変更したことで、私が php5isapi.dll で抱えていた問題も修正されました。

手動インストールを試みた後、「ISAPI フィルター "C:\PHP\php5isapi.dll" で LoadLibraryEx の呼び出しに失敗しました」というエラーが表示される場合:

1) ISAPI フィルターと拡張機能の両方を有効にして、IIS の新規インストールを開始します。

2) メイン設定 [IIS マネージャーの階層ビューの最上部、アプリケーション プールの上] の下に、以下をこの順序で追加します。

  • php5isapi.dll の ISAPI フィルター
  • php5isapi.dll の ISAPI および CGI 制限エントリ
  • php5isapi.dll のハンドラー マッピング

3) アプリケーション プール セクションに移動します。

4) [既定のアプリケーション プール] を右クリックし、[詳細設定] を選択します。

5) 2 番目のオプション [32 ビットを有効にする...] を True に設定します。

また、「既定の Web サイト」に最上位の構成からの固有の設定がないことも重要です。これにより、私の ISS はかなり奇妙な動作を示していました。そのため、最初に既定の Web サイトを削除して、新しい Web サイトを作成することをお勧めします。

単にリンクを提案するのは気分が悪いですが、あまり活動が見られないので、役立つかもしれないと考えました.

于 2013-02-09T09:22:42.347 に答える
1

このエラーの一般的な原因は次のとおりです。

  1. DLL がありません
  2. ビット バージョンの不一致

DLL が正しい場所に存在する場合、DLL のビット バージョンがアプリケーション プールのビット バージョンと一致しない可能性が高くなります (たとえば、32 ビット バージョンのフィルターを 64 ビット サーバーにロードしようとしている場合)。アプリプール)。

この動作に対処することを選択した場合の解決策は、32 ビット アプリと 32 ビット アプリ プールのフィルターを使用することです。64 ビットの場合も同様です。Web サイトを構成し、ASPX および PHP コードを必要に応じて移動します。php5isapi.dll は数年前に廃止されたことに注意してください。

推奨される解決策は、最新の 32 ビット非スレッドセーフ PHP を FastCGI モジュールと共にインストールすることです。PHP アプリケーションは、「32 ビット アプリケーションを有効にする」設定に関係なく動作します。以下を使用できます。

  1. PHPをインストールするためのPHP MSI インストーラー
  2. インストールを管理するIIS 用 PHP マネージャー(ZIP アーカイブから PHP をインストールするのにも役立ちます)
于 2013-02-09T10:28:16.890 に答える
0

IIS が php5isapi.dll を見つけられないという、これと同様の問題が発生したことがあります。

問題は、「参照」ボタンで dll へのパスを指定したことであることが判明しました。これにより、省略されたパスが作成されました (~ が含まれます)。

実際に (参照ボタンを使用する代わりに) 手でパスを入力したところ、突然 IIS が dll を見つけることができました。(そしてパスは省略されていませんでした)。

于 2013-02-09T11:06:40.750 に答える