web-dev-qa-db-ja.com

wamp localhostは機能していますが、ページを表示できません

Wampをインストールし、自分のページをwwwフォルダーに配置しました。また、wampのアイコンは緑色です

ブラウザからローカルホストにアクセスすると、wampのスタート画面とページへのリンクが表示されますが、クリックすると「ウェブページが利用できません」というエラーが発生します。

奇妙な考えは、それが数回機能し、その後突然停止したということです

2
user366184

WAMPServer 2.5ホームページ、[プロジェクト]メニューと仮想ホスト

WampServer 2.5では概念が変更されており、この変更には十分な理由があります。

WampServer 2.5では、\wamp\www\subfolder構造を保持している場合でも、プロジェクトごとに仮想ホストを作成することが強く推奨されています。

仮想ホストのドキュメント

仮想ホストの例

WampServerホームページ(\ wamp\www\index.php)は、すべてのプロジェクトに対して仮想ホストを作成したことを想定しているため、作成した場合にのみ正しく機能します。

履歴

WampServerを使用する初心者がPHP ApacheとMySQLを習得しやすくするために、\wamp\www\フォルダーの下にサブフォルダーを作成することをお勧めします。

wamp
  |-- www
       |-- Chapter1
       |-- Chapter2
       |-- etc

これらのサブフォルダーは、「Your Projects」というメニューの下のWampServerホームページのリンクとして表示され、これらのリンクにはlocalhost/subfoldernameへのリンクが含まれます。

簡単なチュートリアルにのみ使用できます

これにより、完全な初心者の生活が楽になり、たとえば次のチュートリアルでPHPコーディングを学ぶのに完全に受け入れられました。ただし、後で実際のWebサイトを開発するときに使用することは意図されていませんでした。ライブホストサーバーにコピーしたい。実際、このメカニズムを使用した場合、ライブサイトの構成が開発構成と一致しないため、問題が発生することがよくありました。

実際のウェブサイト開発の問題

この理由はもちろん、wampのデフォルトのDocumentRoot設定が

DocumentRoot "c:/wamp/www/"

サブフォルダーの名前に関係なく。 PHP構造またはサイトをクエリするコードを頻繁に使用するこのコードは、開発WampServerで実行するときに、DocumentRoot構成がポイントするライブホストサーバーで実行するときに受け取る情報とは異なる情報を受け取りましたこの種のコードは、多くのフレームワークやCMSに存在します。たとえば、WordPressおよびJoomlaなど)。

Project1というプロジェクトがwamp\www\project1に保持されていて、localhost/project1/index.phpとして正しく実行されていないとします。

これは、問題のPHPコマンドの一部によって報告されるものです。

$_SERVER['HTTP_Host'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www

仮想ホスト定義を使用してそのサイトを正しく定義し、http://project1として実行した場合、WAMPServer開発サイトの結果は、ライブホスト環境で受信した結果と一致します。

$_SERVER['HTTP_Host'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1

さて、この違いは最初は些細なことのように思えるかもしれませんが、WordPressのようなフレームワーク、またはJoomlaのようなCMSのいずれかなどを使用すると、サイトをライブサーバー。

WampServerで仮想ホストを作成する方法

実際、これは、どのApache Apacheサーバーでも基本的に同じように機能するはずですが、Apache構成ファイルがどこにあるかだけが異なります。

Apacheで最初の仮想ホストを作成する手順は3つあり、すでに1つ定義している場合は2つだけです。

  1. 仮想ホスト定義を作成します
  2. 新しいドメイン名をHOSTSファイルに追加します。
  3. 仮想ホスト定義ファイルを含むhttpd.confの行のコメントを解除します。

ステップ1、仮想ホスト定義を作成します

WampServer用に存在するhttpd-vhosts.confというファイルを編集します

\wamp\bin\Apache\apache2.4.9\conf\extra\httpd-vhosts.conf

(Apacheのバージョン番号は異なる場合があります。続行する前に頭を使ってください)

このファイルを初めて編集する場合は、デフォルトのサンプルコードを削除してください。役に立たないです。

にあるproject1というサイトの定義を作成したいと思います。

\wamp\www\project1

非常に重要です。まず、localhostが引き続き機能することを確認する必要があります。これにより、このファイルに配置する最初のVHOST定義になります。

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "c:/wamp/www">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

ここで、プロジェクトを定義します。もちろん、これは、新しいプロジェクトを開始するときに、プロジェクトごとに行います。

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory  "c:/wamp/www/project1">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

注:独自のDocumentRootとして定義された各仮想ホスト。仮想ホスト定義に追加できる他の多くのパラメーターもあります。Apacheのドキュメントを確認してください。

小さい脇

Apacheでの仮想ホストの動作方法:このファイルの最初の定義もデフォルトサイトになるため、ブラウザで使用されるドメイン名が実際に定義された仮想ホストドメインと一致しない場合、localhostをファイルの最初のドメインにします。ハッキングの試みがあなたのIPアドレスを使用するだけの場合にロードされるサイトです。したがって、このドメインのApacheセキュリティが常にに設定されていることを確認すると、

Require local

外部アドレスからのカジュアルなハッキングはエラーを受け取り、PCに侵入しませんが、ドメインのスペルを間違えた場合、WampServerホームページが表示されます。これは、WampServerと同じPCにいるため、localです。

ステップ2

新しいドメイン名をHOSTSファイルに追加します。次に、仮想ホスト定義で使用したドメイン名をHOSTSファイルに追加して、Windowsがそれを見つける場所を認識できるようにする必要があります。これはDNS Aレコードの作成と似ていますが、この場合、この特定のPCでのみ表示されます。

編集C:\windows\system32\drivers\etc\hosts

ファイルには拡張子がないため、そのままにしておく必要があります。より良いエディタがない場合は、.txt拡張子を追加しようとする可能性があるため、メモ帳に注意してください。 Notepad ++をダウンロードすることをお勧めします。これは無料で非常に優れたエディターです。

また、これは保護されたファイルであるため、管理者権限で編集する必要があるため、 管理者として実行 メニューオプションを使用してエディターを起動します。

これらの編集を完了すると、hostsファイルは次のようになります。

127.0.0.1 localhost
127.0.0.1 project1

::1 localhost
::1 project1

ApacheはIPV6に対応し、ブラウザはIPV4またはIPV6、あるいはその両方を使用するため、ここにIPV4ループバックアドレス127.0.0.1とIPV6ループバックアドレス::1の定義が必要であることに注意してください。どのように使用するかを決定する方法はわかりませんが、IPV6スタックがオンになっていて、ほとんどのウィンドウOSがXP SP3。

ここで、Windowsにドメイン名キャッシュを更新するように指示する必要があるため、 管理者として実行 メニューオプションを使用してコマンドウィンドウを再度起動し、次の手順を実行します。

net stop dnscache
net start dnscache

これにより、ウィンドウはドメイン名キャッシュをクリアして再読み込みします。再読み込みすると、HOSTSファイルが再度読み取られるため、ドメインproject1が認識されます。

ステップ3:仮想ホスト定義ファイルを含むhttpd.confの行のコメントを解除します。

Httpd.confを編集し、wampmanager.exeメニューを使用して、正しいファイルを編集していることを確認します。

Httpd.confでこの行を見つけてください

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

そして、その行のコメントを解除するには、#を削除します。

Apacheを実行しているときにこの変更をアクティブにするには、Apacheサービスを停止して再起動する必要があります。

wampmanager.exe -> Apache -> Service -> Restart Service

システムトレイのWAMPアイコンが再び緑色にならない場合は、\wamp\bin\Apache\apache2.4.9\conf\extra\httpd-vhosts.confファイルで何か問題が発生した可能性があります。

もしそうなら、ここに何が悪いのかを見つけるための便利なメカニズムがあります。 Apache exe(httpd.exe)の機能を使用して、構成ファイルをチェックし、ファイル名と行番号でエラーを報告します。

コマンドウィンドウを起動します。

cd \wamp\bin\Apache\apache2.4.9\bin
httpd -t

したがって、エラーを修正し、出力が得られるまで再テストしてください

Syntax OK

これでもう1つあります。

Wampmanagerメニューシステムには、実際には2つの新しいメニュー項目があります。 [b]「マイプロジェクト」[/ b]と呼ばれるもので、デフォルトでオンになっています。もう1つは、[b]「マイ仮想ホスト」[/ b]と呼ばれ、デフォルトではアクティブ化されていません。

「マイプロジェクト」は\ wamp\wwwディレクトリのサブディレクトリをリストし、そのサブディレクトリでサイトを起動するためのリンクを提供します。前に述べたように、「localhost/project1」ではなく「project1」を起動するため、リンクを機能させるには、仮想ホスト定義を作成して、このリンクが実際にブラウザでそのサイトを起動するようにする必要があります。仮想ホスト定義がない場合は、キーワードとしてサイト名のWeb検索を開始するか、サイトが見つからない状態を返します。

[マイ仮想ホスト]メニュー項目は少し異なります。仮想ホストを定義するために使用されるファイルを検索し(1分でそれを取得します)、見つかった各ServerNameパラメーターのメニューリンクを作成し、それぞれのメニュー項目を作成します。\wamp\wwwフォルダのサブディレクトリの仮想ホスト定義を作成すると、[マイプロジェクト]メニューと[マイ仮想ホスト]メニューの両方にいくつかの項目が表示されるため、これは少し混乱するように思われるかもしれません。

この他の「仮想ホスト」メニューをオンにするにはどうすればよいですか?

  • 間違いを犯した場合に備えて、\ wamp\wampmanager.tplファイルのバックアップを作成してください。これは非常に重要なファイルです。
  • \ wamp\wampmanager.tplを編集します
  • このパラメーター;WAMPPROJECTSUBMENUを '[Menu.Left]'セクションで見つけます。
  • この新しいパラメーター;WAMPVHOSTSUBMENUを、;WAMPPROJECTSUBMENUパラメーターの前または後に追加します。
  • ファイルを保存します。
  • 次に、wampmanagerアイコンを右クリックして、[更新]を選択します。これでメニューが追加されない場合は、「終了」してwampmanagerを再起動します。

Big Note新しいメニューは、仮想ホストがすでに定義されている場合にのみ表示されます。それ以外の場合は、VHOSTを定義するまで違いはありません。

これを論理拡張にすると

VHOST定義のDocumentRootパラメータを変更するだけで、Webサイトのコードを完全に\wamp\フォルダ構造の外に移動できます。したがって、たとえば、これを行うことができます。

ワンプディスクまたは他のディスクにフォルダーを作成します(ネットワークドライブに注意してください。これらは少し複雑です)

D:
MD websites
CD websites
MD example.com
CD example.com
MD www

ここで、サイトコードをにコピーするか、\websites\example.com\wwwフォルダーで作成を開始し、次のようにVHOSTを定義します。

<VirtualHost *:80>
    DocumentRoot "d:/websites/example.com/www"
    ServerName example.dev
    ServerAlias www.example.dev
    <Directory  "d:/websites/example.com/www">
        AllowOverride All
        Require all granted
    </Directory>

    php_flag display_errors Off
    php_flag log_errors On

    php_value max_upload_size 40M
    php_value max_execution_time 60
    php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>

次に、この新しい開発ドメインをHOSTSファイルに追加します。

127.0.0.1 localhost
::1 localhost

127.0.0.1 project1
::1 project1

127.0.0.1 example.dev
::1 example.dev

注:実際のドメイン名と同じServerNameまたはServerAliasを使用することはお勧めしません。ServerNameとしてexample.comを使用した場合と同様に、取得できなくなったことを意味します。 example.comを127.0.0.1に転送するため、このPCから実際のライブサイトに移動します。つまり、インターネットに接続するのではなく、このPCに送信します。

また、このサイトにVHOST定義内からインターネットからのアクセスを許可したことを確認してください。この変更はこのサイトにのみ適用され、他のサイトには適用されません。クライアントが変更をライブサーバーにコピーせずに1時間ほど表示できるようにする場合に非常に便利です。これは、wampmanagerの[オンライン/オフラインにする]メニュー項目を使用するのではなく、このファイルを手動で編集してこのアクセスをオンまたはオフにする必要があることを意味します。

また、PHP configにいくつかの変更を加えました。これも、この1つのサイトにのみ適用されます。他のすべてのサイトとは異なり、特定の要件を持つサイトを維持する場合に非常に便利です。使用されているパラメータから、どこかに長時間実行されているページがあり、非常にひどく書かれていて、ページをひどく混乱させることなくブラウザにエラーが表示されても実行されないと推測できます。このようなサイトが存在し、人々がいると信じてくださいそれでもそれらを維持したいひどく。しかし、これは、この特定のサイトのこれらのパラメーターを変更するだけでよく、WampServerで実行されているすべての仮想サイトに対してグローバルに変更する必要がないことを意味します。

4
RiggsFolly

最初に仮想ホストを作成する必要があります。これは、WAMPのAdd a Virtual Hostユーティリティを使用するだけで実行できます。
仮想ホストを作成する手順については、次を参照してください。 仮想ホストを段階的に作成する方法

0
Rakesh