Tạo tệp phục vụ XAMPP / Apache bên ngoài htdocs [đã đóng]


304

Có thể cấu hình xampp để phục vụ một tệp bên ngoài htdocsthư mục không?

Ví dụ: giả sử tôi có một tệp nằm như sau:

C:\projects\transitCalculator\trunk\TransitCalculator.php

và các tệp xampp của tôi thường được phục vụ từ:

C:\xampp\htdocs\

(vì đó là cấu hình mặc định) Có cách nào để khiến Apache nhận ra và phục vụ TransitCalculator.phptệp của tôi mà không di chuyển nó xuống htdocskhông? Tốt nhất là tôi muốn Apache phục vụ / có quyền truy cập vào toàn bộ nội dung của thư mục dự án và tôi không muốn chuyển thư mục dự án theo htdocs.

chỉnh sửa: đã chỉnh sửa để thêm Apache vào tiêu đề câu hỏi để làm cho Q / A trở nên "dễ tìm kiếm hơn"


1
Các thẻ được cho là đủ tìm kiếm, tôi nghĩ vậy.
icedwater

24
Câu hỏi này không nên được đóng lại. Đây là một câu hỏi XAMPP. Đây là một câu hỏi dành cho nhà phát triển.
Andrew Koper

15
Andrew Koper, tôi đồng ý, nhưng điều đó không có gì đáng ngạc nhiên với mức độ đặc hữu không thân thiện nặng nề trong suốt tầng sinh thái trao đổi ngăn xếp vào thời điểm này. _ (ツ) _ / ¯
cmcculloh

Maby off topic, nhưng chỉ muốn tip: Đôi khi, một tùy chọn là thay vào đó di chuyển các thư mục vào thư mục "htdocs" của bạn, vd. nếu bạn muốn có thể mở tệp trong Google Drive trong localhost;) ( stackoverflow.com/questions/41751330/iêu )
Gordova

2
Ngoài tất cả các câu trả lời, tôi muốn thêm một. Từ PHP 5.4.0 trở đi, bạn có thể di chuyển đến thư mục gốc của dự án bằng cách sử dụng dòng lệnh và thực thi php -S <host>:<port>. Ví dụ php -S localhost:80.
radiantshaw

Câu trả lời:


362

Ok, mỗi câu trả lời của pix0r , Sparks 'và Dave có vẻ như có ba cách để làm điều này:


Máy chủ ảo

  1. Mở C: \ xampp \ apache \ conf \ Extra \ httpd-vhosts.conf.
  2. Bỏ bình luận ~ dòng 19 ( NameVirtualHost *:80).
  3. Thêm máy chủ ảo của bạn (~ dòng 36):

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
  4. Mở tệp máy chủ của bạn (C: \ Windows \ System32 \ driver \ etc \ hosts).

  5. Thêm vào

    127.0.0.1 transitcalculator.localhost #transitCalculator

    đến cuối tập tin (trước Spybot - Tìm kiếm & Hủy bỏ nội dung nếu bạn đã cài đặt nó).

  6. Lưu (Bạn có thể phải lưu nó vào máy tính để bàn, thay đổi quyền trên tệp máy chủ cũ (nhấp chuột phải> thuộc tính) và sao chép tệp mới vào thư mục trên thư mục cũ (hoặc đổi tên cũ) nếu bạn đang sử dụng Vista và gặp sự cố).
  7. Khởi động lại Apache.

Bây giờ bạn có thể truy cập thư mục đó bằng cách duyệt đến http: //transitcalculator.localhost/ .


Tạo bí danh

  1. Bắt đầu ~ dòng 200 của http.conftệp của bạn , sao chép mọi thứ giữa <Directory "C:/xampp/htdocs"></Directory>(~ dòng 232) và dán nó ngay bên dưới với C:/xampp/htdocsthay thế bằng thư mục mong muốn của bạn (trong trường hợp này C:/Projects) để cung cấp cho máy chủ của bạn quyền chính xác cho thư mục mới.

  2. Tìm <IfModule alias_module></IfModule>phần (~ dòng 300) và thêm

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"

    (hoặc bất cứ điều gì có liên quan đến mong muốn của bạn) bên dưới Aliaskhối bình luận, bên trong các thẻ mô-đun.


Thay đổi root tài liệu của bạn

  1. Chỉnh sửa ~ dòng 176 trong C: \ xampp \ apache \ conf \ httpd.conf; thay đổi DocumentRoot "C:/xampp/htdocs"thành #DocumentRoot "C:/Projects"(hoặc bất cứ điều gì bạn muốn).

  2. Chỉnh sửa ~ dòng 203 để phù hợp với vị trí mới của bạn (trong trường hợp này C:/Projects).


Ghi chú:

  • Bạn phải sử dụng dấu gạch chéo "/" thay vì dấu gạch chéo ngược "\".
  • Không bao gồm dấu "/" ở cuối.
  • khởi động lại máy chủ của bạn .

13
Ở bước (3) để chỉnh sửa máy chủ C: \ Windows \ System32 \ driver \ etc \. Thực hành tốt nhất để chạy trình soạn thảo (Notepad, Notepad ++ hoặc bất kỳ trình soạn thảo nào) với tư cách Quản trị viên trước tiên. Vì vậy, bạn có thể lưu trực tiếp vào thư mục C: \ Windows \ System32 \ driver \ etc \.
CallMeLaNN

3
Nếu bạn gặp 403 lỗi, hãy tham khảo liên kết này
Wojtek Owczarchot

21
Sử dụng Order cho phép, từ chối Cho phép từ tất cả trên Win7 trả về 403 ERROR vì các tùy chọn này không được chấp nhận. Sử dụng Yêu cầu tất cả được cấp. stackoverflow.com/questions/9110179/ từ
hywak

4
Chỉ cần FYI, bước này dường như không cần thiết đối với tôi để thực hiện: Hủy nhận xét dòng 19 (NameVirtualhost *: 80)
Silverback

2
Sử dụng Order allow,deny Allow from allkhông làm việc cho tôi, nhưng Require all grantedlàm việc.
Danny Beckett

96

Bạn có thể định vị lại nó bằng cách chỉnh sửa cài đặt DocumentRoot trong XAMPP \ apache \ conf \ httpd.conf.

Hiện tại nó phải là:

C: / xampp / htdocs

Thay đổi nó thành:

C: / dự án / quá cảnhCalculator / thân cây


40
Đừng quên chỉnh sửa nó trong cả hai dòng yêu cầu DocumentRoot. Nếu bạn chỉ thay đổi cái trên cùng, bạn sẽ gặp lỗi truy cập đọc, v.v.
Arcolye

2
Điều này cũng áp dụng cho mac XAMP?
kiwi tức giận

Bây giờ bằng URL nào, có thể truy cập trang chỉ mục?
Manish Kumar

49

Virtualhost cũng sẽ hoạt động cho việc này và có thể hoạt động tốt hơn cho bạn vì bạn có thể lưu trữ một số dự án mà không cần thư mục con. Đây là cách bạn làm điều đó:

httpd.conf (hoặc thêm \ httpd-vhosts.conf liên quan đến httpd.conf. Chém dấu gạch chéo "\" có thể khiến nó không hoạt động):

NameVirtualHost *:80
# ...
<VirtualHost *:80>  
    DocumentRoot C:\projects\transitCalculator\trunk\
    ServerName transitcalculator.localhost
    <Directory C:\projects\transitCalculator\trunk\>  
        Order allow,deny  
        Allow from all  
    </Directory>
</VirtualHost> 

Tệp HOSTS (c: \ windows \ system32 \ driver \ etc \ hosts thường):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Bây giờ khởi động lại XAMPP và bạn sẽ có thể truy cập http: //transitcalculator.localhost/ và nó sẽ ánh xạ thẳng đến thư mục đó.

Điều này có thể hữu ích nếu bạn đang cố gắng tái tạo môi trường sản xuất nơi bạn đang phát triển một trang web sẽ nằm trên thư mục gốc của một tên miền. Ví dụ, bạn có thể trỏ đến các tệp có đường dẫn tuyệt đối sẽ chuyển đến máy chủ:

<img src="/images/logo.png" alt="My Logo" />

trong khi trong môi trường sử dụng bí danh hoặc thư mục con, bạn cần theo dõi chính xác vị trí thư mục "hình ảnh" có liên quan đến tệp hiện tại.


Tôi có một số ổ đĩa mạng trên PC đã được ánh xạ tới các ký tự ổ đĩa (ví dụ X:\myfolder). Khi tôi sử dụng phương pháp này, tôi nhận được cảnh báo "Truy cập bị cấm". Điều này có nghĩa là người dùng Apache không có quyền truy cập đọc vào ổ đĩa?
harryg

1
Dưới Directorythay thế Order allow,denyAllow from allvới Require all granted. Xem stackoverflow.com/questions/9110179/ từ
Michiel

16

Bạn có thể đặt Apache để phân phát các trang từ bất kỳ đâu với bất kỳ hạn chế nào nhưng nó thường được phân phối ở dạng an toàn hơn.

Chỉnh sửa các tệp apache của bạn (http.conf là một trong những tên phổ biến hơn) sẽ cho phép bạn đặt bất kỳ thư mục nào để nó xuất hiện trong webroot của bạn.

BIÊN TẬP:

bí danh myapp c: \ myapp \

Tôi đã chỉnh sửa câu trả lời của mình để bao gồm định dạng để tạo bí danh trong tệp http.conf giống như lối tắt trong cửa sổ hoặc liên kết tượng trưng trong un * x trong đó Apache 'giả vờ' một thư mục nằm trong webroot. Điều này có thể sẽ hữu ích hơn cho bạn trong dài hạn.


10

Nếu bạn đang cố gắng để XAMPP sử dụng ổ đĩa mạng làm gốc tài liệu của mình, bạn phải sử dụng các đường dẫn UNC trong httpd.conf. XAMPP sẽ không nhận ra các ổ đĩa mạng được ánh xạ của bạn.

Ví dụ: những thứ sau sẽ không hoạt động, DocumentRoot "X: / webroot"

Nhưng điều này sẽ, DocumentRoot "//192.168.10.100/webroot" (lưu ý các dấu gạch chéo về phía trước, không phải dấu gạch chéo ngược)


Nó hoạt động tốt với ổ đĩa mạng được ánh xạ của tôi.
Sean Kendle

7

Giải pháp cho phép Apache 2 lưu trữ các trang web bên ngoài htdocs:

Bên dưới chỉ thị "DocumentRoot" trong httpd.conf, bạn sẽ thấy một khối thư mục. Thay thế khối thư mục này bằng:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

HÃY NHỚ KHÔNG SỬ DỤNG CẤU HÌNH NÀY TRONG MÔI TRƯỜNG THỰC SỰ


Chỉ hoạt động cho các hệ thống tập tin hỗ trợ symlincs. Không có lời giải thích tại sao tùy chọn này không nên được sử dụng.
Thủy thủ Danubian
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.