[php] 프로젝트 링크가 Wamp 서버에서 작동하지 않습니다.

중간 규모의 데이터베이스와 UI를 실행하기 위해 다른 컴퓨터에 Wamp Server를 설치하고 있습니다. IIS를 차단하고 서버를 Localhost : 8080으로 라우팅하는 데 성공했습니다. 그러나 www 파일의 localhost 홈페이지에서 내 프로젝트에 액세스하려고 할 때마다; 페이지를 찾을 수 없음 오류로 리디렉션됩니다.

링크 위로 마우스를 가져 가면 디렉토리가 항상 “http : // ProjectFolderNameHere /”로 표시됩니다. “http : // LocalHost : 8080 / ProjectFolderNameHere /”가되어야 할 때. 링크가 제대로 작동하도록하려면 어떻게해야합니까?

내 컴퓨터는 Windows 7 Home Edition 64 비트에서 실행되며 Microsoft의 IIS가 이미 비활성화되어 있습니다.



답변

WampServer에서 가상 호스트를 만드는 방법


WAMPServer 3는이 과정을 훨씬 쉽게 만들어줍니다!

WAMPServer의 일부로 제공되는 유틸리티에서 거의 모든 작업을 수행 할 수 있습니다.

  • project.site를 포함 할 폴더를 내부에 만듭니다. 이것은 C:\wamp\www\디렉토리 아래에 있거나 C:\websites.

  • EG를 선택한 위치 C:\websites\project1\www또는 아래에 폴더를 만듭니다 .c:\wamp\www\project1\www

  • 이제 localhost를 열고 홈페이지의 TOOLS 섹션 아래 wampmanager->localhost에있는 링크를 클릭하십시오 Add a Virtual Host.

다음과 같은 페이지가 표시됩니다.

여기에 이미지 설명 입력

  • 각 필드 위의 지침에 지정된대로 필드를 채우십시오.

  • 가상 호스트 구성이 생성됩니다.

  • 이제 DNS 캐시를 다시 시작해야합니다. 이와 같은 wampmanager 메뉴에서이 작업을 수행 할 수 있습니다 right click wampmanager->Tools->Restart DNS. DNS 캐시가 다시 시작되고 Apache도 중지되고 다시 시작됩니다. wampmanager 아이콘이 다시 녹색으로 바뀌면 모든 것이 완료된 것입니다.

  • 이제 간단한 index.php파일을 만들 거나 위에서 만든 폴더에 사이트를 설치해야합니다.

  • VH가 호출되었다고 가정하면 WAMPServer 홈페이지 의 가상 호스트 섹션 project.dev에서 해당 이름을 볼 수 있습니다.

  • 이 메뉴에서 사이트를 시작하거나 주소 표시 줄 EG project1.dev및 사이트 shoudl 시작 에서 새 도메인 이름을 사용할 수 있습니다 .


이전 WAMPServer 2.5 메커니즘 또는 모든 것을 수동으로 수행하려는 경우

WampServer 2.5 이상에서 개념이 변경되었으며이 변경에 대한 좋은 이유가 있습니다!

WampServer에서는 이제 프로젝트를 \wamp\www\subfolder구조로 유지하더라도 각 프로젝트에 대한 가상 호스트를 만드는 것이 강력히 권장됩니다 .

가상 호스트 문서

가상 호스트 예

WampServer 홈 페이지 ( \wamp\www\index.php)는 이제 모든 프로젝트에 대해 가상 호스트를 만들었을 것으로 예상하므로 그렇게하는 경우에만 제대로 작동합니다.

역사

WampServer를 사용하는 초보자가 PHP Apache와 MySQL을 배우기 위해 더 쉽게 사용할 수 있도록 폴더 아래에 하위 폴더를 만드는 것이 좋습니다 \wamp\www\.

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

이러한 하위 폴더는 WampServer 홈페이지의 ‘Your Projects’라는 메뉴 아래에 링크로 표시되며 이러한 링크에는 localhost/subfoldername.

간단한 자습서에만 허용됨

이것은 완전한 초보자의 삶을 편하게 만들었고, 예를 들어 PHP 코딩을 배우기 위해 튜토리얼을 따르는 사람들에게 완벽하게 허용되었습니다. 그러나 나중에 라이브 호스팅 서버에 복사하려는 실제 웹 사이트를 개발할 때 사용하기위한 것이 아닙니다. 실제로이 메커니즘을 사용했다면 라이브 사이트 구성이 개발 구성과 일치하지 않기 때문에 종종 문제가 발생했습니다.

실제 웹 사이트 개발 의 문제 .

그 이유는 물론 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에서 가상 호스트를 만드는 방법

실제로 이것은 기본적으로 모든 wndows Apache 서버에서 동일하게 작동해야하며 Apache 구성 파일을 찾을 수있는 위치에서만 차이가 있습니다.

Apache에서 첫 번째 가상 호스트를 만드는 데는 3 단계가 있으며 이미 정의 된 경우 2 단계 만 있습니다.

  1. 가상 호스트 정의 만들기
  2. HOSTS 파일에 새 도메인 이름을 추가하십시오.
  3. 가상 호스트 정의 파일을 포함하는 httpd.conf의 행의 주석 처리를 제거하십시오.

1 단계 , 가상 호스트 정의 생성

httpd-hosts.confWampServer가 있는 파일을 편집하십시오 .

\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">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

이제 프로젝트를 정의합니다. 물론 새 프로젝트를 시작할 때 각 프로젝트에 대해 수행합니다.

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory  "c:/wamp/www/project1">
        Options Indexes FollowSymLinks
        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 ++를 다운로드하는 것이 좋습니다.

또한 이것은 보호 된 파일이므로 관리자 권한으로 편집해야하므로 관리자 권한으로 실행 메뉴 옵션을 사용하여 편집기를 시작 하십시오 .

이러한 편집을 완료하면 호스트 파일이 다음과 같아야합니다.

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-hosts.conf파일에 문제가있는 것입니다 .

그렇다면 여기에 무엇이 잘못되었는지 알아낼 수있는 유용한 메커니즘이 있습니다. Apache exe (httpd.exe)의 기능을 사용하여 구성 파일을 확인하고 파일 이름과 줄 번호로 오류를보고합니다.

명령 창을 시작하십시오.

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

따라서 오류를 수정하고 출력을 얻을 때까지 다시 테스트하십시오.

Syntax OK

이제 한 가지 더 있습니다.

wampmanager 메뉴 시스템에는 실제로 2 개의 새로운 메뉴 항목이 있습니다. 기본적으로 켜져있는 ‘내 프로젝트’ 라는 이름 입니다. 그리고 기본적으로 활성화되지 않는 ‘My Virtual Hosts’ 라는 두 번째 항목 입니다.

‘내 프로젝트’는 \ wamp \ www 디렉토리의 모든 하위 디렉토리를 나열하고 해당 하위 디렉토리에서 사이트를 시작할 수있는 링크를 제공합니다. 앞서 말했듯이 ‘localhost / project1’이 아닌 ‘project1’을 시작하므로 링크가 작동하도록하려면이 링크가 실제로 브라우저에서 해당 사이트를 시작하도록 가상 호스트 정의를 만들어야합니다. 가상 호스트 정의 없이는 사이트 이름에 대한 웹 검색을 키워드로 시작하거나 사이트를 찾을 수 없음 조건을 반환합니다.

‘내 가상 호스트’메뉴 항목은 약간 다릅니다. 가상 호스트를 정의하는 데 사용되는 파일을 검색하고 (우리는 잠시 후에 다룰 것입니다) 찾은 각 ServerName 매개 변수에 대한 메뉴 링크를 만들고 각각에 대한 메뉴 항목을 만듭니다. \ wamp \ www 폴더의 하위 디렉토리에 대한 가상 호스트 정의를 생성하면 일부 항목이 ‘내 프로젝트’메뉴와 ‘내 가상 호스트’메뉴 모두에 표시되므로 약간 혼란스러워 보일 수 있습니다.

다른 ‘내 가상 호스트’메뉴를 켜려면 어떻게해야합니까?

  • 실수 할 경우를 대비하여 \ wamp \ wampmanager.tpl 파일의 백업을 만드십시오. 매우 중요한 파일입니다.
  • \ wamp \ wampmanager.tpl을 편집합니다.
  • 이 매개 변수 ;WAMPPROJECTSUBMENU는 ‘[Menu.Left]’섹션에서 찾습니다.
  • 매개 변수 ;WAMPVHOSTSUBMENU앞이나 뒤에이 새 매개 변수 를 추가하십시오 ;WAMPPROJECTSUBMENU.
  • 파일을 저장하십시오.
  • 이제 wampmanager 아이콘을 마우스 오른쪽 버튼으로 클릭하고 ‘새로 고침’을 선택하십시오. 메뉴가 추가되지 않으면 ‘종료’하고 wampmanager를 다시 시작하십시오.

참고
사항 새 메뉴는 이미 일부 가상 호스트를 정의한 경우에만 나타납니다! 그렇지 않으면 VHOST를 정의 할 때까지 차이가 ​​없습니다.

이제 이것을 논리적 확장으로 가져 가면

이제 \wamp\VHOST 정의에서 DocumentRoot 매개 변수를 변경 하여 웹 사이트 코드를 폴더 구조 외부로 완전히 이동할 수 있습니다 . 예를 들어 다음과 같이 할 수 있습니다.

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">
        Options Indexes FollowSymLinks
        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를 사용하는 것은 좋은 생각이 아닙니다. example.com을 ServerName으로 사용한 것처럼 더 이상 여기에서 실제 라이브 사이트로 이동할 수 없음을 의미하기 때문입니다. PC는 example.com을 127.0.0.1, 즉 인터넷이 아닌이 PC로 연결합니다.

또한 : VHOST 정의 내에서 인터넷에서이 사이트에 액세스 할 수 있도록 허용했습니다.이 변경 사항은이 사이트에만 적용되며 다른 사이트에는 적용되지 않습니다. 클라이언트가 라이브 서버에 복사하지 않고도 한 시간 정도 변경 사항을 볼 수 있도록하는 데 매우 유용합니다. 이것은 wampmanager의 온라인 / 오프라인 메뉴 항목을 사용하는 대신이 액세스를 켜고 끄려면이 파일을 수동으로 편집해야 함을 의미합니다.

또한 PHP 구성에 몇 가지 수정 사항을 추가했습니다. 다시 한 번이 사이트에만 적용됩니다. 유지 관리하는 다른 모든 사이트와 달리 특정 요구 사항이있는 사이트를 유지 관리 할 때 매우 유용합니다. 사용 된 매개 변수에서 어딘가에 오래 실행되는 페이지가 있고 매우 잘못 작성되었으며 페이지를 끔찍하게 엉망으로 만들지 않고 브라우저에 오류가 표시되면서 실행되지 않을 것이라고 가정 할 수 있다고 생각합니다. 이런 사이트가 존재하고 사람들은 여전히 ​​사이트가 나쁘게 유지되기를 원한다고 믿으십시오 . 그러나 이는 WampServer에서 실행되는 모든 가상 사이트가 아닌이 특정 사이트에 대해서만 이러한 매개 변수를 변경해야 함을 의미합니다.


답변

이것이 최선의 해결책이라고 생각합니다.

www 폴더에서 index.php를 열고 설정

30 행 변경 :$suppress_localhost = true;

…에
$suppress_localhost = false;

이렇게하면 프로젝트가 로컬 호스트 IP / 이름으로 접두사로 지정됩니다.


답변

폴더 index.php에서 열고 www설정

$suppress_localhost = false;

http://localhost/프로젝트 링크 앞에 추가 됩니다.


답변

홈페이지에서 프로젝트에 액세스하려면 먼저 가상 호스트 를 만들어야합니다 .

이를 수행하는 가장 쉬운 방법은 Wamp의 가상 호스트 추가 유틸리티를 사용하는 것입니다.

다음 단계를 따르십시오.

  1. 내부에 폴더를 만듭니다 : “\ WAMP \ www가 \ C” 디렉토리 및 예에 대한 귀하의 사이트에 부여 할 것을 그것을 이름을 지정합니다. ‘ mysite ‘. 따라서 경로는 “C : \ wamp \ www \ mysite” 입니다.
  2. 이제 브라우저에서 localhost의 홈페이지를 열고 도구 메뉴 에서 가상 호스트 추가 링크를 클릭하십시오.
  3. 가상 호스트 의 이름을 입력합니다.이 이름은 www 디렉토리 (예 : ‘ mysite ‘) 내에 생성 한 폴더의 이름이어야합니다 .
  4. 입력 절대 경로 가상 호스트, 즉의 “C를 : \ WAMP \ www가 \ 내 사이트 \” 따옴표없이 말하는 아래의 버튼을 클릭하여 ‘시작 가상 호스트의 창조’ .
  5. 가상 호스트가 생성되었으므로 이제 ‘DNS 다시 시작’ 만하면 됩니다. 이렇게하려면 Wamp 서버의 트레이 메뉴 아이콘을 마우스 오른쪽 버튼으로 클릭하고 도구> DNS 다시 시작을 클릭 한 다음 트레이 메뉴 아이콘이 다시 녹색이되도록합니다.
  6. 모든 설정! 이제 “C : \ wamp \ www \ mysite \” 디렉토리 안에 ‘index.php’ 페이지를 만드십시오 . ‘index.php’ 파일에 다음과 같은 코드를 추가하십시오.
    <?php
    echo "<h1>Hello World</h1>";
    ?>

이제 localhost의 홈페이지에서 프로젝트에 액세스 할 수 있습니다. 프로젝트 링크를 클릭하면 화면에 ‘Hello World’가 인쇄됩니다.


답변

깨진 아이콘 링크를 수정하는 방법 (blank.gif, text.gif 등)

아쉽게도 앞서 언급했듯이 단순히 가상 호스트를 프로젝트에 추가하는 것만으로는 깨진 아이콘 링크가 수정되지 않습니다.

문제 :

WAMP / Apache는 아이콘에 대한 디렉토리 참조를 각 설치 디렉토리로 변경하지 않습니다. 정적으로 “c : / Apache24 / icons”로 설정되어 있으며 Apache 설치 사용자의 99.9 %가 여기에 상주하지 않습니다. 특히 WAMP에서.

수정 사항 :

  1. Apache 아이콘 디렉토리를 찾으십시오! 일반적으로 “c : /wamp/bin/apache/apache2.4.9/icons”에 있습니다. 그러나 마일리지는 설치에 따라 다를 수 있으며 Apache 버전이 다른 경우 경로도 다를 수 있습니다. \

  2. 좋아하는 편집기에서 httpd-autoindex.conf를 엽니 다. 이 파일은 일반적으로 “C : \ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-autoindex.conf”에서 찾을 수 있습니다. 다시 말하지만, Apache 버전이 다른 경우이 경로도 다릅니다.

  3. 다음 정의를 찾습니다 (일반적으로 파일 상단 근처에 있음).

    Alias /icons/ "c:/Apache24/icons/"
    
    <Directory "c:/Apache24/icons">
    Options Indexes MultiViews
    AllowOverride None
    Require all granted
    </Directory>
    
  4. “c : / Apache24 / icons /”디렉토리를 자신의 디렉토리로 바꾸십시오. 중요 첫 번째 디렉토리 참조에는 후행 슬래시가 있어야합니다. 두 번째 디렉토리 참조에는 후행 슬래시가 없어야합니다. 결과는 다음과 유사해야합니다. 다시 말하지만 디렉토리는 다를 수 있습니다.

    Alias /icons/ "c:/wamp/bin/apache/apache2.4.9/icons/"
    
    <Directory "c:/wamp/bin/apache/apache2.4.9/icons">
    Options Indexes MultiViews
    AllowOverride None
    Require all granted
    </Directory>
    
  5. Apache 서버를 다시 시작하고 멋진 아이콘을 즐기십시오!


답변

@RiggsFolly의 모든 단계를 따를 수 있습니다. 정말 좋은 대답입니다.

그래도 문제가 있으면이 방법을 사용하세요.

  1. 설치 한 wamp 폴더 (예 : c : / Wamp /)를 찾습니다.
  2. Goto Wamp / www /
  3. index.php 파일 열기
  4. 이 코드 찾기 $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
  5. http : // 뒤에 localhost를 추가하여 수정하십시오. $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://localhost' : '').$file.'">'.$file.'</a></li>';
  6. WAMP 서버 다시 시작
  7. localhost 열기 업데이트 된 링크보기

이전 버전의 wamp 서버와 같은 URL을 얻으 셨기를 바랍니다.


답변

$suppress_localhost = false;

이것은 나를 위해 트릭을했습니다.