Thông báo bị cấm WAMP 403 trên Windows 7


101

Tôi đã cài đặt WAMP phiên bản 2.1 trên máy tính chạy windows 7 của mình. Khi tôi duyệt đến localhost trong trình duyệt của mình, trang máy chủ WAMP sẽ hiển thị.

Nhưng khi tôi duyệt đến IP của mình trong trình duyệt, tôi nhận được thông báo

403 Forbidden: Bạn không có quyền truy cập / vào máy chủ này.

Bất kỳ đề xuất?


Việc truy cập vào máy chủ Apache của bạn bị cấm từ các địa chỉ khác hơn là 127.0.0.1trong httpd.conf(tập tin cấu hình của Apache)
Nasreddine

Tôi đã sửa lại điều đó, bây giờ tôi đang nhận được 403 Forbidden trong phpMyAdmin của mình, bất kỳ đề xuất nào cho điều đó?
Jake

cũng có một phpmyadmin.confchứa chỉ thị cho bí danh 'localhost / phpmyadmin'
Nasreddine

nếu bạn đang ở đây cho windows 8 chk this stackoverflow.com/questions/13945783/…
tồi tệ

Câu trả lời:


126

Việc truy cập vào máy chủ Apache của bạn bị cấm từ các địa chỉ khác hơn là 127.0.0.1trong httpd.conf(tập tin cấu hình của Apache):

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

Tương tự với quyền truy cập PHPMyAdmin của bạn, tệp cấu hình là phpmyadmin.conf:

<Directory "c:/wamp/apps/phpmyadmin3.4.5/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
</Directory>

Bạn có thể đặt chúng để cho phép kết nối từ tất cả các địa chỉ IP như sau:

AllowOverride All
Order allow,deny
Allow from all

7
Điều này chắc chắn sẽ mở ra quyền truy cập từ bất kỳ địa chỉ IP nào, nhưng điều đó có hơi nguy hiểm không? Quy tắc cho phép 'từ 127.0.0.1' phải đủ để cho phép truy cập cục bộ, nếu đó là mục tiêu chính ở đây, thì về cơ bản 127.0.0.1 là một vòng lặp quay lại bộ điều hợp mạng. Nếu bạn nhập vào thanh địa chỉ 'http': //127.0.0.1: {portNumber} / {folderOrFileName} ', nó sẽ hoạt động tốt. Điều này sẽ hoạt động giống như sử dụng localhost, nhưng tôi thấy một số trình duyệt có vấn đề với localhost vì một số lý do.
Jeremy

Tôi không thể định dạng dòng địa chỉ của mình trong nhận xét cuối cùng đó nên có thêm "'" trong đó, chỉ cần bỏ qua điều đó xin lỗi nếu nó gây nhầm lẫn cho bất kỳ ai.
Jeremy

Lưu ý: tệp đặt các giá trị mặc định sau đó được ghi đè lần lượt sau đó, vì vậy hãy đảm bảo các dòng này đi sau tất cả các lần ghi đè.
gặp mặt

3
Đừng quên "Khởi động lại tất cả dịch vụ" từ menu khay hệ thống WAMP (hoặc theo cách bạn làm.)
Plummer

12
Đối với Apache phiên bản 2.4.x thay thế Require localvới Require all grantedtrong httpd.conf tập tin bên trong <Directory "c:/wamp/www/">thẻ sau đó khởi động lại tất cả các dịch vụ
Rakesh

62

Tôi đã tìm thấy một bản sửa lỗi đơn giản hơn ...

Mặc dù biểu tượng có màu xanh lá cây nhưng WAMP vẫn cần phải là "Đặt Trực tuyến" (mục cuối cùng của menu khi nhấp chuột trái vào biểu tượng).

Sau đó tôi đã truy cập như bình thường.


3
Trên thực tế, điều này nên được gắn cờ là một câu trả lời được chấp nhận. Cảm ơn anh bạn.
ummahusla

Giải pháp này xứng đáng một upvote vì cấu hình được cập nhật khi bạn actualy nhấn vào nút trực tuyến đặt: forum.wampserver.com/read.php?1,119467,119546
Pierre-Yves Guillemet

Điều này đã sửa nó cho tôi quá. Mặc dù trong trường hợp của tôi, trước tiên tôi phải "Đặt ngoại tuyến", sau đó "Đặt trực tuyến" và hoạt động mà không có bất kỳ thay đổi nào khác đối với tệp cấu hình của tôi! Cảm ơn bạn!!
Osmar

1
Trên thực tế, tôi đã bắt đầu thực hiện tất cả những điều đó trong câu trả lời đầu tiên, được chấp nhận. Và nó không giúp được gì. Sau đó, tôi nhìn thấy cái này ở đây, và tôi nghĩ 'Không thể nào có thể như thế này được ...', nhưng, chính nó và nó đã hoạt động.
Fusseldieb

Supercalifragilisticexpialidocious!
Vahid

25

Đối với tôi, việc bao gồm "Yêu cầu cục bộ" đã giúp giải quyết Lỗi 403. Tệp cấu hình bí danh trông giống như sau:

Alias /mytest/ "C:/mytest/" 

<Directory "C:/mytest/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
    Require local
</Directory>

3
Điều này cũng làm việc cho tôi, sử dụng Apache 2.4.9. Đã tìm kiếm điều này trong một thời gian dài. Cảm ơn!
Jonathan Lidbeck

Options Indexes FollowSymLinks MultiViewsđược yêu cầu cũng
Hammad Khan

Bất kỳ lý do nào để thêm phần "C: / mytest /"? Nó dường như không có bất kỳ tác dụng, và chỉ để lại một / cuối cùng vì nó là như là tiêu chuẩn dường như công việc chỉ là tốt
Squazz

Sử dụng tốt hơn 'Yêu cầu tất cả được cấp' thay cho 'Yêu cầu cục bộ' nếu bạn muốn mở trang web của mình trên các thiết bị khác trong mạng cục bộ của mình
Rakesh

Thêm "Cho phép từ tất cả" đã làm điều đó cho tôi.
Rex the Strange

10

Giải pháp thay đổi quyền trong httpd.conf sẽ hoạt động nếu bạn đồng ý với việc cung cấp quyền truy cập vào máy chủ WAMP từ bên ngoài.

Nếu bạn không muốn làm điều đó thì tất cả những gì bạn phải làm là cho windows biết rằng miền "localhost" trỏ đến 127.0.0.1. Bạn có thể làm điều đó bằng cách chỉnh sửa tệp máy chủ trong thư mục hệ thống của mình.

Tệp được đặt tại: C: \ Windows \ System32 \ drivers \ etc \ hosts

theo mặc định windows 7 đi kèm với:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

Bạn phải bỏ nhận xét ánh xạ cho localhost:

# localhost name resolution is handled within DNS itself.
127.0.0.1       localhost
#   ::1         localhost

Lưu ý: bạn sẽ không thể chỉnh sửa tệp máy chủ lưu trữ dưới dạng tệp chỉ đọc. Để chỉnh sửa, bạn phải là quản trị viên, sao chép tệp vào một số vị trí khác, chỉnh sửa và sau đó sao chép lại vào thư mục vv.

Tôi không khuyên bạn nên thay đổi tệp máy chủ. Sử dụng các quyền của tệp httpd.conf. chỉ sử dụng phương pháp tiếp cận tệp máy chủ nếu bạn không muốn máy chủ bị truy cập từ bên ngoài.


8

Hãy thử thêm các dòng mã sau vào tệp httpd-vhosts.conf:

<VirtualHost *:80>
ServerAdmin serveradmin@host.com
DocumentRoot "C:\wamp\www"
ServerName localhost
</VirtualHost>

7

Một điều khác mà tôi phát hiện ra là nếu bộ điều hợp mạng của bạn sử dụng IPV6, nó sẽ không hiển thị là 127.0.0.1 nhưng :: 1

Cuối cùng những gì tôi đã làm là:

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
</Directory>

Tương tự với quyền truy cập PHPMyAdmin của bạn, tệp cấu hình là phpmyadmin.conf:

<Directory "c:/wamp/apps/phpmyadmin3.4.5/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        Allow from ::1
</Directory>

Tôi nghĩ câu trả lời này thực sự giải quyết vấn đề quan trọng đang được hỏi, cụ thể là khi IPv6 được bật, localhost sẽ phân giải thành địa chỉ IPv6 (:: 1) và do đó, địa chỉ yêu cầu cũng sẽ là địa chỉ IPv6 (cũng :: 1) KHÔNG giống với 127.0.0.1, là địa chỉ duy nhất mà các kết nối được cho phép. Ngoài ra, localhost giải quyết thông qua máy chủ DNS cục bộ theo mặc định (không phải máy chủ) và theo tôi thì sẽ đẹp hơn nếu để nó theo cách đó và thay vào đó là vô hiệu hóa IPv6 để localhost phân giải thành 127.0.0.1 hoặc thay đổi / bao gồm như trên.
phản xạ nhanh

chỉ cần thêm 'Allow from :: 1' vào "c: \ wamp \ alias \ phpmyadmin.conf file" đã giải quyết được vấn đề phpmyadmin 403.
ewroman

4

nếu bạn đã sử dụng localhost / phpmyadmin /

chỉ cần sử dụng

127.0.0.1/phpmyadmin/ cho PHPMyAdmin

127.0.0.1/sqlbuddy/ cho SQLBuddy

hoặc nếu bạn đã sử dụng localhost: 8080 / phpmyadmin / thì

127.0.0.1:8080/phpmyadmin/ cho PHPMyAdmin

127.0.0.1:8080/sqlbuddy/ cho SQLBuddy


4

Hãy nhớ loại bỏ các phần tử giả trong httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

Cảm ơn! Điều này đã sửa nó.
Steve

4

Đối với Apache phiên bản 2.4.x chỉ đơn giản là thay thế Require localvới Require all grantedtrong httpd.conf tập tin bên trong <Directory "c:/wamp/www/">thẻ sau đó khởi động lại tất cả các dịch vụ


1
Điều này đã làm các mẹo cho tôi. Điều kỳ lạ là 2 VirtualHosts khác (trong httpd-vhosts.conf) không có 'Yêu cầu cục bộ' hoặc 'Yêu cầu tất cả được cấp', và vẫn hoạt động tốt. ¯_ (ツ) _ / ¯
kmdsax

3

Đối với Wamp 3.1.3 và Apache 2.4, tôi chỉ cần thay đổi 1 dòng trong tệp httpd-vhosts.conf của mình.

  1. Mở httpd-vhosts.conf
  2. Thay đổi "Yêu cầu cục bộ" thành "Yêu cầu tất cả được cấp"
  3. Khởi động lại tất cả các dịch vụ

Sau đó, tôi có thể truy cập máy chủ apache của mình từ các máy tính khác.

Ghi công cho video này: https://www.youtube.com/watch?v=Sy_f6wBGnjI


2

Có thể có nhiều nguyên nhân dẫn đến vấn đề này

Những gì tôi đã gặp phải là:
1) 127.0.0.1 localhostmục nhập bị trùng lặp trong tệp máy chủ
2) Apache mod_rewritekhông được bật

Không phụ thuộc vào nguyên nhân, sao lưu của bạn wwwthư mục, tập tin cấu hình vhost (và httpd tập tin cấu hình) sẽ giúp đỡ. Và quá trình như vậy mất một vài phút.

Chúc may mắn


2

Tôi đã đọc và thử Tất cả các bản sửa lỗi nhưng không một bản sửa lỗi nào hiệu quả. Cuối cùng, tôi thấy rằng Logo máy chủ Wamp có màu xanh lục nhưng cần phải là "PUT ONLINE". Thật đơn giản và một cách khắc phục nhanh chóng sau khi kiểm tra PHPMyAdmin.CofgHttPD.cofgchỉ cần nhấp chuột vào PUT ONLINE


1

Tôi đã thử các cấu hình ở trên và chỉ điều này hoạt động cho cấu hình WAMP Apache 2.4.2 của tôi. Đối với nhiều trang web gốc không có tên miền trong tệp máy chủ Windows của bạn, hãy sử dụng http://locahost:8080, http://localhost:8081, http://localhost:8082và cấu hình sau:

#ServerName localhost:80
ServerName localhost

Listen 8080
Listen 8081
Listen 8082
#..... 
<VirtualHost *:8080>
    DocumentRoot "c:\www"
    ServerName localhost
    <Directory "c:/www/">
        Options Indexes FollowSymLinks
        AllowOverride all
        Require local
    </Directory>
</VirtualHost>
<VirtualHost *:8081>
    DocumentRoot "C:\www\directory abc\svn_abc\trunk\httpdocs"
    ServerName localhost
    <Directory "C:\www\directory abc\svn_abc\trunk\httpdocs">
        Options Indexes FollowSymLinks
        AllowOverride all
        Require local
    </Directory>
</VirtualHost>
#<VirtualHost *:8082></VirtualHost>.......

1

Tôi gặp sự cố này với wamp trên windows 7. Việc thêm mã sau vào httpd-vhosts.conf đã giải quyết được vấn đề cho tôi.

<VirtualHost *:80>
  DocumentRoot "F:/wamp_server/www/"
  ServerName localhost
</VirtualHost>

1

Cảm ơn câu hỏi của bạn. Tôi đang sử dụng wamp 3 bây giờ. Và tôi tìm thấy một câu trả lời đơn giản để làm điều này dưới câu hỏi của bạn. Nhưng câu trả lời đó sẽ thay đổi một chút trên wamp 3. Các bước như sau:

  1. Nhấp chuột phải vào biểu tượng wamp
  2. Chọn cài đặt Wamp
  3. Nhấp vào mục Menu: trực tuyến / ngoại tuyến
  4. Nhấp chuột trái vào biểu tượng wamp
  5. Bạn sẽ thấy có một mặt hàng mới tên là "Đặt trực tuyến"

Cảm ơn bạn, @ miltonb.
Smart Du

1

Tôi đã mất mãi mãi để tìm ra điều này.

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

Trong tệp này, bạn sẽ thấy một số tệp máy chủ ảo mẫu, trông giống như:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

Chỉ cần xóa các mục này và thay thế bằng:

<VirtualHost *:80>
    ServerAdmin serveradmin@host.com
    DocumentRoot "C:\wamp\www"
    ServerName localhost
</VirtualHost>

Bạn chắc chắn cần phải đảm bảo những con vịt khác của bạn ở trong một hàng nhưng điều này đối với tôi với giải pháp đã hiệu quả.


0

xin chào, có 2 giải pháp:

  1. thay đổi cổng 80 thành 81 trong tệp văn bản (httpd.conf) và nhấp vào 127.0.0.1:81

  2. thay đổi cài đặt mạng vào bảng điều khiển - mạng và internet - trung tâm mạng và chia sẻ

bấm vào -> chọn kết nối khu vực cục bộ -> kiểm tra phù hợp với true trong -allow other ..... và --- allo other .....


0

Tôi cũng có vấn đề này. Vấn đề của tôi là do tôi đã mắc lỗi trong tệp vhosts.conf của mình. Nếu bạn đang sử dụng vhosts, đây là một điều khác cần kiểm tra


0

Cấu hình này trong httpd.conf phù hợp với tôi.

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 ::1
</Directory>

0

Đảm bảo rằng bạn không sử dụng ký tự phân tách thư mục của Windows (dấu gạch chéo ngược) trong tên đường dẫn trong tệp .conf của bạn, ngay cả khi bạn đang sử dụng Windows. Apache không hiểu chúng nhưng vẫn sẽ khởi động và sau đó xuất ra a 403 Forbidden Message.

Sai lầm:

<Directory "c:\websites\my-website\">

đúng:

<Directory "c:/websites/my-website/">

0

Đáng ngạc nhiên là dấu ngoặc vuông trong đường dẫn DocumentRoot (và các đường dẫn liên quan, như <Directory>) cũng có thể gây ra lỗi 403:

  • DocumentRoot "P:/TRY/web/fatfree/from_github/fatfree-master[bang]" thất bại với 403, trong khi
  • DocumentRoot "P:/TRY/web/fatfree/from_github/fatfree-master" hoạt động tốt.

(Tôi không bận tâm đến việc tìm ra đường dẫn Apache thoát, nếu có, chỉ cần đổi tên đường dẫn thay thế. Nếu ai biết, chúng tôi hoan nghênh nhận xét.)


0

Giải pháp của tôi là vô hiệu hóa mã hóa cho các tệp được mã hóa (các tệp này có màu xanh lục trong cửa sổ). Ive lấy các tệp này từ máy tính MAC và nó được mã hóa theo mặc định.

Ive select these files > right click > properities > general tab > andvanced > uncheck encrypt files...

Và nó hoạt động.


0

Tôi đã thử tất cả các thứ ngoại trừ xóa mớ hỗn độn trong tệp .htaccess.

Truy cập thư mục www / và tạo một bản sao của tệp .htaccess trong một thư mục khác. Sau đó, xóa tất cả các dòng trong tệp gốc .htaccess . Và thêm dòng này,

RewriteEngine On

Sau đó khởi động lại máy chủ. Điều này đã giải quyết vấn đề của tôi và có quyền truy cập vào tất cả các trang web máy chủ cục bộ của tôi. Hy vọng nó cũng sẽ giải quyết được của bạn.


0

Ngoài ra trên Apache 2,4, bạn có thể cần thêm điều này vào chỉ thị thư mục trong conf, trong trường hợp bạn quyết định bao gồm httpd-vhosts.conf.

Theo mặc định, bạn có thể cài đặt wamp trong C: \ nhưng vẫn chọn triển khai phát triển web của mình ở một vị trí khác.

Để thực hiện việc này bên trong vhosts.conf, bạn có thể thêm chỉ thị này:

<Directory "e:/websites">
    Options Indexes FollowSymLinks MultiViews
    DirectoryIndex index.php
    AllowOverride All
  <IfDefine APACHE24>
    Require local
  </IfDefine>
  <IfDefine !APACHE24>
    Order Deny,Allow
    Allow from all
    Allow from localhost ::1 127.0.0.1
  </IfDefine>
</Directory>

0

đảm bảo rằng tên của tệp trong thư mục c:/wamp/apps/phpmyadmin3.1.3.1/khớp với tên (hoặc phiên bản) trong phpMyAdmin.conf ( Alias /phpmyadmin "c:/wamp/apps/phpmyadmin3.1.3.1/")


0

Tôi nhận thấy rằng nếu bạn đang sử dụng bộ khuếch đại mà vì lý do nào đó, nó luôn bị cấm khi nó nằm trong thư mục gốc của bạn, vì vậy tôi đặt nó vào thư mục phía trên thư mục gốc của mình và tạo một bí danh trong việc httpd.conf sử dụng

Alias /phpmyadmin "C:/Program Files (x86)/Ampps/phpMyAdmin"

xin lưu ý rằng tôi đang sử dụng bộ khuếch đại và tôi không biết chắc liệu nó có hoạt động với người khác hay không nhưng nó đáng để thử;)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.