복붙노트

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

PHP

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

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

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

My Machine은 Windows 7 Home Edition 64 비트에서 실행되며 Microsoft의 IIS는 이미 비활성화되어 있습니다.

해결법

  1. ==============================

    1.

    WAMPServer의 일부로 제공되는 유틸리티를 통해 거의 모든 것을 수행 할 수 있습니다.

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

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

    WampServer에서는 각각의 프로젝트에 대해 Virtual Host를 생성하는 것이 강력하게 권장됩니다. 심지어 가상 호스트를 \ wamp \ www \ subfolder 구조로 보유하고 있더라도 마찬가지입니다.

    가상 호스트 문서

    가상 호스트 예제

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

    역사

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

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

    이 하위 폴더들은 'Your Projects'라는 메뉴 아래 WampServer Homepage에 링크로 표시되며이 링크에는 localhost / subfoldername에 대한 링크가 포함됩니다.

    간단한 자습서에만 허용됩니다.

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

    실제 웹 사이트 개발 문제.

    그 이유는 wamp의 기본 DocumentRoot 설정이

    DocumentRoot "c : / wamp / www /"

    어떤 하위 폴더가 호출되었는지에 관계없이 DocumentRoot 구성이 웹 사이트의 상단에있는 폴더를 가리키는 라이브 호스팅 서버에서 실행될 때 얻을 수있는 내용으로 개발 WampServer에서 실행될 때 구조 또는 사이트를 쿼리 한 PHP 코드를 자주 사용하는이 코드는 다른 정보를 받았습니다. 파일 계층 구조. 이런 종류의 코드는 워드 프레스 (WordPress)와 줌라 (Joomla) 등의 많은 프레임 워크와 CMS에 존재합니다.

    예를 들어

    우리가 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의 프레임 워크를 사용한다면 사이트를 실제 서버로 옮길 때 문제가 발생할 수 있습니다.

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

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

    1 단계, 가상 호스트 정의 만들기

    WampServer에 대한 httpd-hosts.conf 파일을 편집하십시오.

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

    (아파치 버전 번호는 다를 수 있습니다, 계속하기 전에 두뇌에 참여하십시오)

    처음으로이 파일을 편집하는 경우 기본 예제 코드를 제거하십시오. 사용하지 마십시오.

    우리가 살고있는 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 및 해당 지역의 PC와 동일한 PC에 있기 때문에 WampServer 홈페이지가 표시됩니다.

    2 단계:

    새 도메인 이름을 HOSTS 파일에 추가하십시오. 이제 가상 호스트 정의에 사용 된 도메인 이름을 HOSTS 파일에 추가해야합니다. 그러면 HOSTS 파일을 찾을 위치를 알 수 있습니다. 이는 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
    

    여기서 IPV4 루프백 주소 127.0.0.1과 IPV6 루프백 주소 :: 1에 대한 정의가 있어야합니다. Apache는 이제 IPV6을 인식하고 브라우저는 IPV4 또는 IPV6 또는 둘 다를 사용합니다. 어떻게 사용할지 결정하지는 못했지만, IPV6 스택을 켜고 XP SP3의 경우 대부분의 윈도우 OS를 사용하는 경우 사용할 수 있습니다.

    이제 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 아이콘이 다시 GREEN으로 이동하지 않으면 \ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-vhosts.conf 파일에서 잘못 처리 한 것임을 의미합니다.

    그렇다면 무엇이 잘못되었는지를 알아내는 유용한 메커니즘입니다. 아파치 exe (httpd.exe)의 기능을 사용하여 설정 파일을 검사하고 파일 이름과 줄 번호별로 오류를보고합니다.

    명령 창을 실행하십시오.

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

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

    Syntax OK
    

    이제 한 가지 더 있습니다.

    실제로 wampmanager 메뉴 시스템에는 2 개의 새로운 메뉴 항목이 있습니다. 하나는 '내 프로젝트'라고 불리며 기본적으로 사용하도록 설정되어 있습니다. 두 번째로는 'My Virtual Hosts'라고 불리는데, 이는 기본적으로 활성화되지 않습니다.

    '내 프로젝트'는 \ wamp \ www 디렉토리의 하위 디렉토리를 나열하고 해당 하위 디렉토리에서 사이트를 시작하는 링크를 제공합니다. 앞에서 말했듯이 'project1`을 시작하고'localhost / project1 '이 아니라는 점에서 링크가 작동하도록하려면이 링크가 가상 호스트 정의없이 브라우저에서 해당 사이트를 실제로 실행하도록 가상 호스트 정의를 만들어야합니다. 사이트 이름에 대한 웹 검색을 키워드로 실행하거나 사이트를 찾을 수없는 상태로 되돌립니다.

    '내 가상 호스트'메뉴 항목은 약간 다릅니다. 가상 호스트를 정의하는 데 사용되는 파일을 검색하고 (1 분 안에 알아낼 것입니다) 발견 된 각 ServerName 매개 변수에 대한 메뉴 링크를 작성하고 각 ServerName 매개 변수에 대해 메뉴 항목을 작성합니다. 이것은 'My Projects'메뉴와 'My Virtual Hosts'메뉴 모두에 표시 될 항목이 \ wamp \ www 폴더의 하위 디렉토리에 대한 가상 호스트 정의를 작성하면 조금 혼란스러워 보일 수 있습니다.

    이 '내 가상 호스트'메뉴를 켜려면 어떻게해야합니까?

    빅 노트 이미 가상 호스트가 정의되어있는 경우에만 새 메뉴가 나타납니다! 그렇지 않으면 VHOST를 정의 할 때까지 아무런 차이가 없습니다.

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

    이제 VHOST 정의에서 DocumentRoot 매개 변수를 변경하여 웹 사이트 코드를 \ 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">
            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에서 실행되는 모든 가상 사이트에 대해이 특정 사이트에 대해 이러한 매개 변수를 변경하기 만하면됩니다.

  2. ==============================

    2.

    나는 이것이 최선의 해결책이라고 생각한다.

    www 폴더에서 index.php를 열고 설정하십시오.

    줄 바꿈 30 : $ suppress_localhost = true;

    에 $ suppress_localhost = false;

    이렇게하면 프로젝트에 로컬 호스트 IP / 이름 접두어가 붙습니다.

  3. ==============================

    3.

    www 폴더에서 index.php를 열고 설정하십시오.

    $suppress_localhost = false;
    

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

  4. ==============================

    4.

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

    다음 단계를 따르십시오.

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

  5. ==============================

    5.

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

    불행히도 이전에 언급 한 것처럼 프로젝트에 가상 호스트를 추가하는 것만으로는 깨진 아이콘 링크를 수정할 수 없습니다.

    문제 :

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

    수정 :

  6. ==============================

    6.

    당신은 @RiggsFolly에 의해 모든 단계를 수행 할 수 있습니다. 정말 좋은 대답입니다. 가상 호스트를 만들고 싶지 않고 이전 localhost / example /와 같은 것을 사용하고 싶다면 @Arunu의 답을 사용할 수 있습니다.

    하지만 여전히 문제가 있다면이 방법을 사용하십시오.

    희망 당신 wamp 서버의 이전 버전과 같은 귀하의 URL을 가지고.

  7. ==============================

    7.

    $suppress_localhost = false;
    

    이것은 나를 위해 속임수를했다.

  8. ==============================

    8.

    Re : Wampserver LocalHost 링크가 올바르게 작동하지 않습니다. 이것은 Wampserver2.5 (2014 년 6 월) 이후입니다 (나중에 빌드에서이 문제를 해결할 것입니다). 참고 : LocalHost 대신 LocalHost : 8080을 사용하려면 아래에서 언급 한 편집 내용을 적절히 변경하십시오.

    이 문제에는 2 가지 측면이 있습니다. 첫 번째는 Wamp localhost 홈페이지에서 "Your Projects"항목에 액세스 할 수 있습니다. 두 번째는 Wampserver 아이콘 작업 표시 줄의 "내 프로젝트"목록에 나열된 항목에 올바르게 액세스 할 수 있어야합니다.

    첫 번째 문제를 해결하려면 (Wamp localhost 홈페이지에서 "Your Projects"항목에 액세스 할 수 있도록) 다음을 수행해야합니다 ...

    wamp \ www 폴더 (보통 C : \ wamp \ www)에있는 index.php 파일에서 두 가지 편집 작업을 수행해야합니다.

    1) 30 행 변경

      $suppress_localhost = true;
    

      $suppress_localhost = false;
    

    2) 라인 338 변경

      $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
    

      $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : 'http://localhost//').$file.'">'.$file.'</a></li>';
    

    위의 편집을 완료 한 후 - Wampserver가 실행중인 경우 로컬 호스트 페이지를 새로 고치면 변경 사항이 즉시 적용됩니다.

    두 번째 항목 (Wampserver 아이콘 작업 표시 줄의 "내 프로젝트"목록)를 수정하려면 다음을 수행하십시오. C : \ wamp \ scripts \ refresh.php를 편집해야합니다.

    행 651을 찾고 읽는 행의 섹션을 변경하십시오.

       Parameters: "http://'.$projectContents[$i].'/"; Glyph: 5
    

       Parameters: "http://localhost//'.$projectContents[$i].'/"; Glyph: 5
    

    이 두 번째 변경 사항을 수행 한 후에는 Wamp Icon Tray App의 맨 아래에 Put Online / Offline 옵션을 토글하여 Wampserver가 "My Projects"목록을 새로 고쳐야 할 수 있습니다.

  9. ==============================

    9.

    Wamp 3 이상에서 작동합니다.

    www 폴더에서 index.php를 조정할 필요가 없습니다.

  10. ==============================

    10.

    두 번째 경우

  11. ==============================

    11.

    www 디렉토리 (wamp 서버를 사용하는 경우) htdocs (XAMPP에있는 경우)로 이동하십시오. admin.php를 열고 프로젝트 내용을 검색하십시오. 또는 라인 번호 339로 직접 이동하여 '로컬 호스트를 링크에 삽입하여 링크를 변경하십시오.

    그게 효과가있어.

  12. ==============================

    12.

    프로젝트에서 로컬 하위 도메인을 만들고 아파치에게 이름으로 여러 사이트를 제공하는 것이 훨씬 쉽습니다.

    예를 들어 http : //mysite.localhost에서 액세스 할 수 있도록 c : / wamp64 / www / sites / mysite 아래에 프로젝트를 만들었 으면 다음과 같이하면됩니다.

    1. 귀하의 기계에 다른 이름으로 대답하도록하십시오. C : \ windows \ system32 \ drivers \ etc \ hosts에 127.0.0.1 mysite.localhost를 추가하십시오.

    2. DNS 캐시 플러시 관리자 권한으로 명령 프롬프트를 열고 net stop dnscache를 입력 한 다음 net start dnscache를 입력하십시오.

    3. 아파치에게 보일 곳을 알려라. 트레이에서 Wamp 아이콘을 클릭하고 Apache -> httpd.conf로 이동하여 끝에 추가하십시오.

    # Tells Apache to identify which site by name
    NameVirtualHost *:80
    # Tells Apache to serve the default WAMP Server page to "localhost"
    <VirtualHost 127.0.0.1>
    ServerName localhost
    DocumentRoot "C:/wamp/www"
    </VirtualHost> 
    # Tells Apache to serve Client 1's pages to "client1.localhost"
    # Duplicate and modify this block to add another client
    <VirtualHost 127.0.0.1>
    # The name to respond to
    ServerName client1.localhost
    # Folder where the files live
    DocumentRoot "C:/wamp64/www/sites/mysite"
    # A few helpful settings...
    <Directory "C:/wamp64/www/sites/mysite">
    allow from all
    order allow,deny
    # Enables .htaccess files for this site
    AllowOverride All
    </Directory>
    # Apache will look for these two files, in this order, if no file is specified in the URL
    DirectoryIndex index.html index.php
    </VirtualHost> 
    

    (출처)

    4. 아파치를 다시 시작하십시오. 트레이에서 Wamp 아이콘을 클릭하고 "다시 시작"을 선택하십시오.

    5. 기본 URL 정의 프로젝트 폴더로 이동하여 를 섹션에 추가하여 서버 루트에 대한 링크가 끊어지지 않도록하십시오.

    개인적으로이 html 코드를 PHP를 사용하여 (예 : $ site_root = (IS_LOCALHOST)? ' : null;) 사용하여 템플릿에 동적으로 주입합니다. 한 번 생산에 그것을 제거하는 것을 괴롭히기 위하여.

  13. ==============================

    13.

    안녕하세요, wamp 서버에서 index.php를 열고 $ suppress_localhost = false를 변경해야합니다; from $ suppress_localhost = true; 그럼 당신의 와이프가 잘 작동합니다.

  14. from https://stackoverflow.com/questions/23665064/project-links-do-not-work-on-wamp-server by cc-by-sa and MIT lisence