web-dev-qa-db-ja.com

WAMP:URLにhttp:// localhost /がない、間違ったwampプロジェクトリンク

私はこれまで私に起こったことのないWampに問題があり、何が悪いのかを見つけることができません。 wwwフォルダー(Windows 7を実行している)にいくつかのプロジェクトがあります。

ホストファイルの行は127.0.0.1 localhostコメントなしです

http://localhost/またはhttp://127.0.0.1/に移動し、メインのWampパネルページから「mysite」などのプロジェクト名をクリックすると、リンクは"http://localhost/mysite"ではなく「mysite」を指しているだけです。

したがって、サイトが表示されません。どうすればよいですか?

2
mlclm

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

これらのサブフォルダーは、WampServerホームページの「YourProjects」というメニューの下にリンクとして表示され、これらのリンクには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で仮想ホストを作成する方法

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

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

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

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

httpd-hosts.confというファイルを編集します。このファイルはWampServerの場合は次の場所にあります。

\wamp\bin\Apache\apache2.4.9\conf\extra\httpd-hosts.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と同じPCを使用しているため、WampServerホームページが表示されます。したがってlocal

ステップ2

新しいドメイン名をHOSTSファイルに追加します。次に、仮想ホスト定義で使用したドメイン名をHOSTSファイルに追加して、Windowsがそれを見つける場所を認識できるようにする必要があります。これはDNSAレコードの作成に似ていますが、この場合はこの特定の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スタックがオンになっている場合はどちらでも使用でき、ほとんどのWindowsOSはXP SP3の時点で実行します。

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

net stop dnscache
net start dnscache

これにより、Windowsはドメイン名キャッシュをクリアしてリロードします。リロードすると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-hosts.confファイルで何か問題が発生した可能性があります。

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

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

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

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

Syntax OK

もう1つあります。

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

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

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

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

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

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

これを論理的な拡張にすると

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

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

注:サーバー名としてexample.comを使用したかのように、ライブドメイン名と同じServerNameまたはServerAliasを使用することはお勧めできません。 example.comを127.0.0.1に誘導するので、このPCから実際のライブサイトにアクセスします。つまり、このPCであり、インターネットに接続しません。

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

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

5
RiggsFolly

RiggsFollyの答えは私のために働いた...

また、フォルダにアクセス許可を与えてブラウザでアクセスする場合は、追加する必要があります。

ファイルhttpd.confに別のエントリを作成します

<Directory "d:/websites/example.com/www">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>
1
Dave1