1 年後、Apache+php を再度インストールしました。インストール後、php について新たに理解できました。
昨年のインストール中にメモを書きました: http://blog.csdn.net/monkey7777/article/details/9261325。
詳細な構成レッスンについては、上記のメモを参照してください。
次に、インストールプロセス中に発生する可能性のあるいくつかの問題を書き留めます:
1. Apache の起動時にエラーが発生しました: httpd: サーバーの完全修飾を確実に判断できませんでした。
ドメイン名
この問題についての私の理解は次のとおりです: ポートの問題。 (港湾占拠、港湾紛争および同様の問題)
1 つの方法は、Apache の httpd.conf ファイルで「Listen」を見つけて、そのポート値を変更することです。
別の方法は、現在ポートを占有しているプロセスを見つけて、そのプロセスを強制終了することです。
ポートの使用状況を検索:
netstat -anofindstr "8080"このポートを使用してプロセスを表示します: (「x」はプロセス番号です)
tasklistfindstr "x"
プロセスを終了します: (「x」はプロセス番号です)
tskill "x"Tomcat はポート 8088 を使用し、iis はポート 8080 を使用するため、Listen 値を 8090 に変更して問題を解決しました。
上記の 2 つの方法で問題が解決しない場合 (DNS 構成の問題であるはずです)、httpd.conf に文を追加できます (「ServerName localhost:8090」を追加します。場所は次のとおりです)。
#ServerName www.example.com:80 ServerName localhost:80
2. Apache を起動すると、「php5apache2_4.dll をサーバーにロードできません」というエラーが表示されます
最新バージョンの php (php-5.5.15-Win32-VC11-x64) をダウンロードしました。
httpd.conf に次の文があります: (このエラー行は、エラーを報告するときに表示されます)
LoadModule php5_module "c:\php\php5apache2_4.dll"
この問題を見た後、最初に考えたのは、php5apache2_4.dll を php5apache2_2.dll に置き換えることでした。しかし、実践は失敗であることが判明しました。
オンラインで検索すると、その理由は次のようにわかります: バージョンの問題。
よく見ると、php 名に VC9 と VC11 のロゴがあることがわかります。この PHP がどの VC コンパイル環境で実行されるかを表します。 (結局のところ、これは C++ で書かれています...)
私の理解では、VC9 を使用したものは VC2008 ランタイムがインストールされた状態で実行され、VC11 を使用したものは VC2012 ランタイムがインストールされた状態で実行されるはずです。しかし、2012 ランタイム ライブラリをインストールした後も、依然として正しく実行できないことがわかりました。 Liangshen が提供する php-5.3.6-Win32-VC9-x64 を使用しました (中身は php5apache2_2.dll です)。設定後は問題なく実行できました。
http://windows.php.net/公式 Web サイトには次のように記載されています:
VC9 and VC11 More recent versions of PHP are built with VC9 or VC11 (Visual Studio 2008 and 2012 compiler respectively) and include improvements in performance and stability. The VC9 builds require you to have the Visual C++ Redistributable for Visual Studio 2008 SP1 x86 or x64 installed. The VC11 builds require to have the Visual C++ Redistributable for Visual Studio 2012 x86 or x64 installed.これは、VC9 と VC11 にはそれぞれ特定のコンパイル環境が必要であることを意味します。 VC9 --> VC2008、VC11 --> VC2012。
ネット上でそのような発言を見ました。 「Apacheのバージョンが異なるため、対応する「php5apache2.dll」も異なります。」これは、apache と php のバージョンが相互にサポートする関係にあることを意味します。
つまり:
Apache2.2 对应 php5apache2_2.dll Apache2.1 对应 php5apache2.dll Apache1 对应 php5apache.dllしかし、公式サイトには記載されていないので、対応関係はないはずだと思います。
しかし、VC2012 ランタイム ライブラリをインストールした後も、VC11 バージョンの php はまだ使いにくいです。VC2012 ランタイム ライブラリが適切にインストールされていないか、何らかの対応関係があるのではないかとしか思えません。
環境に問題がないのであれば、この対応を試してみると良いでしょう。