Làm thế nào để phát hiện trong PHP, nếu nó đang chạy trên Apache, Nginx hoặc một số máy chủ web khác? [đóng cửa]


12

Đầu tiên tôi biết biến này: _SERVER["SERVER_SOFTWARE"]

Trong một trong những ứng dụng của tôi, tôi muốn kiểm tra từ tập lệnh PHP mà máy chủ web đang chạy. Về cơ bản nó sẽ là một plugin wordpress sẽ giúp các Blogger chỉnh sửa một số cấu hình.

Tôi đã tạo quy trình riêng cho Apache & Nginx và cũng đã suy nghĩ về việc phát hành mã dưới dạng 2 plugin wordpress khác nhau.

Sau đó, tôi chỉ tò mò muốn biết liệu có một cách FULLPROOF trong PHP để phát hiện các máy chủ web hoàn hảo hay không.

Vui lòng xem xét tất cả các trường hợp :: Apache, Nginx, Apache + Nginx, PHP là mô-đun Apache, PHP sử dụng fastcgi, php-fpm, lighttpd, IIS, v.v.

Ngoài ra nó rất quan trọng cho ứng dụng của tôi để phát hiện sự hiện diện của combo và proxy.

Cảm ơn,

-Rahul

Câu trả lời:


10

Câu trả lời ngắn gọn là không thể xác định một cách xác định những gì máy chủ web đang sử dụng. Giá trị gần nhất bạn sẽ nhận được là giá trị của $ _SERVER ["SERVER_SOFTWARE"].

Có thể biết được phần mềm nào đang chạy tại [URL cụ thể bằng cách lấy dấu vân tay của ứng dụng nhưng điều đó rất phức tạp - và nó sẽ chỉ cho bạn biết điều gì chấm dứt kết nối HTTP - đó có thể là proxy.

Những gì bạn thấy trong phpinfo () sẽ không hiển thị máy chủ web cho [nhanh] cgi và nó sẽ chỉ hiển thị những gì quản trị viên chọn để cung cấp trên các hệ thống khác.

Ngoài ra nó rất quan trọng cho ứng dụng của tôi để phát hiện sự hiện diện của combo và proxy.

Tôi không biết ý của bạn là 'combo'. Đối với proxy .... cũng không có cách nào để nói điều đó.

Có lẽ nếu bạn giải thích lý do tại sao bạn cần thông tin này và nó có giá trị gì đối với bạn thì chúng tôi có thể đưa ra dự đoán sáng suốt hơn về câu trả lời phù hợp với nhu cầu của bạn.

C.


Theo cambo, ý tôi đơn giản là - một số người dùng chọn Nginx làm máy chủ web mặt trước và sau đó sử dụng Apache để chạy PHP. Một trường hợp là họ muốn chạy cpanel và nginx cùng nhau. Bây giờ trong ứng dụng của tôi, trong một phần, tôi muốn hướng dẫn người dùng một số quy tắc viết lại phức tạp dựa trên máy chủ web. Trong trường hợp apache + nginx ở trên, tập lệnh PHP mà máy chủ web của tôi sẽ phát hiện? Tôi
rahul286

0

Một người nào đó trên trang web Hướng dẫn PHP đã đăng một cách để đưa phpinfo() các biến vào một mảng, có rất nhiều thông tin ở đó nhưng cũng có Systemnơi php đang chạy, có lẽ bạn có thể sử dụng nó. Nhìn vào các ý kiến.

Ngoài ra, việc phát hiện proxy không dễ dàng như vậy, bạn có thể sử dụng các tiêu đề http (như Via) nhưng có rất nhiều cách có thể sai.


cảm ơn câu trả lời và sự giúp đỡ của bạn Tôi biết thông qua các tiêu đề không thể tin tưởng được và đó là lý do tôi đang tìm kiếm sự giúp đỡ.
rahul286
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.