2010-02-14 11 views
27

tất cả các URL bên ngoài trông giống như 'mô-đun/hành động? Key1 = param1'. Không thể tùy chỉnh - nhưng nó nhanh. Sự khác biệt là lần đầu tiên sử dụng GET của PHP, và thứ hai sử dụng PATH_INFO.PATH_INFO chính xác trong PHP là gì?

Tôi đã xem PATH_INFO nhiều lần, nhưng vẫn không biết chính xác nó là gì. Nó làm gì?

Trả lời

34

Thực ra, PATH_INFO có liên quan đến Máy chủ web Apache cung cấp các trang PHP và không phải PHP.

PATH_INFO là biến môi trường do Apache đặt khi bật AcceptPathInfo directive. Nó sẽ chứa thông tin tên đường dẫn theo sau tên tệp thực hoặc tệp không tồn tại trong thư mục hiện có, cho dù yêu cầu được chấp nhận hay bị từ chối. Các biến môi trường sau đó được chuyển sang mô-đun Apache/CGI phụ trách việc hiển thị trang.

Biến có thể truy cập được bằng PHP sử dụng $_SERVER['PATH_INFO'].

Ví dụ: giả sử vị trí /test/ trỏ đến thư mục chỉ chứa một tệp here.html. Sau đó, yêu cầu cho /test/here.html/more/test/nothere.html/more cả hai đều thu thập /more làm PATH_INFO.

Apache Core Documentation: AcceptPathInfo Directive

+8

Sau khi đọc câu trả lời của bạn, người ta có thể suy ra đó là một thực tế xấu để dựa vào PATH_INFO và nó không phải là. PATH_INFO là một phần của định nghĩa cho CGI (như SimonSinCity chỉ). Nó được hỗ trợ bởi hầu hết các máy chủ web, không chỉ Apache. –