web-dev-qa-db-ja.com

Apache構成変更後に構文エラーが表示され、Apacheが失敗し、php5Apache2_2.dllをサーバーにロードできない

Apacheのセットアップ担当者に再び行き詰まっています。私は、Windows 7 ProfessionalとService Pack 1を実行する64ビットシステムで作業しています。チームメイトから作業用のphp5インストールディレクトリをコピーし、php5インストールフォルダー内から必要な.dllファイルをコピーしました(作業セットアップにあったように)チームメイト)から私のwindows/system32/へ。 Apacheサーバーは、デフォルトのApache構成(httpd.conf)ファイルで正常に起動しました。ブラウザでlocalhostにアクセスできました。しかし、phpコードは解析されませんでした。 Apache構成ファイルに次のような行はありませんでした。

# PHP5 module
LoadModule php5_module D:/php5/php5Apache2_2.dll

この行を追加すると、Apacheサーバーの起動が失敗します。テスト構成を実行すると、次のエラーが発生します-

httpd.exe: Syntax error on line 60 of C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load D:/php5/php5Apache2_2.dll into server: The specified procedure could not be found.  

しかし、php5Apache2_2.dllファイルは指定された場所にあり、現在のシステムユーザーにphp5インストールディレクトリへのすべての権限を与えました。同じ行がApacheエラーログにも表示されます。ここでのもう1つのことは、ログがログファイルに正確に書き込まれるタイミングがわからないことです。読み取り用にログファイルを開いた場合、ログエントリが作成されないと混乱しますか?笑...エントリーしたときのパターンが見られなかったから。いくつかのログエントリが作成されているのを見ましたが、そうでないものもあります。しかし、それは今のところ別の問題です。

以前、Apacheとphpを同じシステムの別のハードディスクにセットアップしていました。私が今行ったのと同じ手順を実行しましたが、セットアップは成功しましたが、上で書いたログファイルエントリの混​​乱のように頭をひっかきました。以前にどのように正確に修正したか覚えていません。しかし、同じApache構成ファイル(古いハードディスクの以前のセットアップで以前に動作していたファイル-バックアップを取ったもの)を試しましたが、それでも同じエラーが発生します。

更新
http://us3.php.net/manual/en/install.windows.Apache2.php を読み、AddHandler application/x-httpd-php .phpの直後にLoadModule php5_module "D:/php5/php5Apache2_2.dll"を追加しました。まだ成功していません。

私は このブログ も読んでいます。ここでは、VC6とVC9のバイナリについて言及しています。私はそれらについて知りません。それについて何かする必要がありますか?

更なる更新
Apacheを http://httpd.Apache.org/download.cgi -「Win32 Binary without crypto(no mod_ssl)(MSI Installer)」オプションからダウンロードしました。

3
Sandeepan Nath

ほとんどの場合、互換性のないApacheビルドがあります。あなたはどこからApache HTTPDをダウンロードしましたか?+ PHPあなたが持っているバージョンは何ですか?.

  1. Apache Loungeウェブサイト から最新のApacheビルドを取得します。Apache.orgビルドはまだVC6ですが、ビルドはVC9でコンパイルされています。公式のPHPビルドは現在コンパイルされているため、VC9ビルドが必要です(PHP for Windows Webサイトについては、#2のリンクを参照してください。 )。

  2. PHP from PHP for Windows (質問に基づいて)のビルドThread-Safeビルドを取得しますApacheモジュールとして実行したい場合)FastCGIとして実行したい場合は、非スレッドセーフビルドが必要です。

  3. すべてのnon-defaultphp拡張機能を無効にします(PHPが動作している状態で)Apacheが正常に起動するまで)。

  4. PHPおよび必要に応じてApacheを構成します(これまでに述べたApacheの構成行は問題ありません)。

PS "php5インストールフォルダー内から必要な.dllファイルをコピーしました(チームメイトの作業セットアップにあったように)私の窓/ system32/"

  1. Windowsのx64ビットバージョンを使用しています。 C:\windows\system32\は64ビットプロセス/ファイル専用です。あなたの場合、ApacheとPHPはx32なので、正しい場所はC:\Windows\SysWOW64

  2. それらのファイルをそこにコピーする実際の理由はありません-PHPインストールパス(D:\php5\)をPATH環境変数(前に配置)に追加すると、Windowsはすべてのファイルを自動的に検索します(再起動が必要になる場合があります)-私には問題ありません。

PPS手動でインストールする代わりに、すでに構成済みのスタックの1つを使用できます: [〜#〜] xamp [〜# 〜][〜#〜] wamp [〜#〜] または類似。

8
LazyOne

問題を修正しました。実際には、いくつかの必要なdllファイルが存在しないこと、特定のファイルが不明であることが理由であり、多くのdllファイルが存在しないことを試していました。

私がしたことは、チームメイト1のApache構成部分を実行し、チームメイト2(Windows pxを搭載した32ビットシステム上にある)からphp5ディレクトリをコピーしていたことです。私はphp 5フォルダーが同じで間違っていたと思いました。 teammate 1のphp 5フォルダーを使用すると、問題が解決しました。

確認したところ、2つのphp5フォルダー(主にdllファイル)の内容に多くの違いがあることがわかりました。チームメイト1の正しいphp5フォルダーを取得した後にシステムを再起動する必要があったため、必要なdllファイルがないことが問題であったに違いありません。

物語の教訓-
コピー中は、同じ場所から脳とコピーを適用しないでください:)

3
Sandeepan Nath

これらのファイル(libeay32.dllssleay32.dllなど)をどこにでもコピーする必要はありません。問題は、phpインストールディレクトリをシステムパス環境変数に追加することで解決できます。

1
asmmahmud