私は2台のサーバー、Windows 7を実行するテストサーバー、およびWindows Server 2008を実行するサーバーを持っています。(うん、残念ですがWindowsのPHP7にアップグレードされました:php_soap.dllがクラッシュする/頻繁に500のエラーが発生する
今月は、5.4.1.4で動作していました。
私はそれらをPHP 7にアップグレードすることに決めました。すべてはテストボックスで完全にうまくいった。しかし、もちろん、それは多くのトラフィックを取得しません。
[prod/Windows Server 2008]ボックスでは、Webアプリケーションが1〜2分実行されてから「500エラー」と表示されるようです。私はリフレッシュすることができ、時々彼らは再び働くだろう、時々それは数分かかるだろう。
新しいPHPエラーログには何も書き込まれませんでした(IISのPHPマネージャセクションでは正しいINIと正しいログファイルが指摘されていましたが)。
Webサーバーの失敗した要求ログは、FastCGIが500個のエラーが多すぎるために失敗したことを単純に示しました。
イベントビューアを確認したところ、アプリケーションのクラッシュが発生し、php_soap.dllを指摘していました。
今、そのファイルはそこにあり、それは私がnon-prodで持っているのと同じサイズです。
まだ、私のスクリプトは正当な理由で500個のエラーが発生していた可能性があると考えました。そこで私はそれらの1つを調べた。それがテストボックス上の作業用のものと完全に一致していることを確認しました。それをリフレッシュし...それは正常に働いた。もう少し、500のエラーをリフレッシュしました。
最後に、IISマネージャー - > PHPマネージャーに入り、SOAP拡張機能を無効にしました。
私は、失敗した要求の膨大な数を見るのを止めて、私はSOAP呼び出しを行う1つのスクリプトを除いて、すべて500エラーを見逃しました。
私はテストボックスからprodボックスにdllをコピーしようとしました。 PHPで拡張機能を再び有効にしました。問題は返されました。ですから、私は5.4.1.4の設定に戻ってきました。
どのように私はこのDLLが問題を引き起こしているか、そして/またはそれを修正する方法を考え出すことができますか?
ありがとうございます!
- =
は最高のアイデアではないかもしれません。また、PHP 7用に再コンパイルし、PHP 5で使用したのと同じものを使用する必要はありません(既に使用していない場合)。これが問題ではない場合は、互換性の問題としてPHPの人々と一緒にこれを上げることができると思います。 – apokryfos
テストサーバとプロードサーバの両方... PHPアップグレードインストールを行ったときに... Webプラットフォームインストーラを使用し、どちらもx64 PHP 7インストールを使用しました。だから、私がDLLをコピーしていると言ったら、まったく同じファイルであったはずだと思っています。 – DaveyBoy
通常は動作しますが、特定のシステム用の不正なDLLの可能性を完全に排除したい場合は、特定のPHPディストリビューションとアーキテクチャをターゲットにしてコンパイルする必要があります。 – apokryfos