Đây là một vấn đề mà tôi đã chạy vào thời gian gần đây - một apache sai cấu hình trên một máy chủ web. Điều này có nghĩa là tất cả các tập lệnh dựa trên số lần ngắt $_SERVER['DOCUMENT_ROOT']
. Cách giải quyết đơn giản nhất mà tôi đã tìm thấy là chỉ cần đặt biến trong một số tệp bao gồm toàn cục được chia sẻ, nhưng đó là một nỗi đau không thể quên nó. Câu hỏi của tôi là, làm cách nào để xác định đúng tài liệu gốc?Làm thế nào để lập trình xác định gốc tài liệu trong PHP?
Ví dụ, trên một máy chủ, các thiết lập là như thế này:
$_SERVER['DOCUMENT_ROOT'] == '/htdocs'
Rễ tài liệu thật là:
test.example.com -> /data/htdocs/example.com/test
www.example.com -> /data/htdocs/example.com/www
Và tôi muốn một kịch bản đó là chạy từ www.example.com/blog/
(trên đường dẫn /data/htdocs/example.com/www/blog
) để nhận giá trị chính xác của /data/htdocs/example.com/www
.
Mở máy chủ khác, các thiết lập là một chút khác nhau:
$_SERVER['DOCUMENT_ROOT'] == '/srv'
test.example.com -> /home/virtual_web/example.com/public_html/test
www.example.com -> /home/virtual_web/example.com/public_html/www
Có bất kỳ giải pháp này? Hoặc là cách duy nhất đơn giản là không bao giờ dựa vào $_SERVER['DOCUMENT_ROOT']
và sửa tất cả phần mềm mà tôi đang chạy trên trang web của mình? Việc sửa lỗi này ở phía máy chủ không có vẻ là một tùy chọn, tôi chưa gặp phải một máy chủ lưu trữ ở nơi mà cấu hình này được định cấu hình chính xác. Điều tốt nhất tôi nhận được là một tài liệu gốc trỏ đến www.example.com, ít nhất là bên trong open_basedir - họ đã sử dụng một lược đồ đặt tên khác, www.example.com sẽ trỏ đến /u2/www/example_com/data/www/
.
Một số tập lệnh mà tôi đã cài đặt là "quá thông minh" và biết thư mục nào (liên quan đến thư mục tài liệu lý thuyết) mà chúng được cài đặt và thêm vào thư mục gốc tài liệu (sau khi nhận được từ cơ sở dữ liệu). Tôi vẫn phải sửa đổi mã cho mỗi thư mục để loại bỏ các thư mục ... hay không? –