Guide to URL paths...
Data: $_SERVER['PHP_SELF']
Data type: String
Purpose: The URL path name of the current PHP file, including path-info (see $_SERVER['PATH_INFO']) and excluding URL query string. Includes leading slash.
Caveat: This is after URL rewrites (i.e. it's as seen by PHP, not necessarily the original call URL).
Works on web mode: Yes
Works on CLI mode: Tenuous (emulated to contain just the exact call path of the CLI script, with whatever exotic relative pathname you may call with, not made absolute and not normalised or pre-resolved)
________số 8
Data: $_SERVER['REDIRECT_URL']
Data type: String
Purpose: The URL path name of the current PHP file, path-info is N/A and excluding URL query string. Includes leading slash.
Caveat: This is before URL rewrites (i.e. it's as per the original call URL).
Caveat: Not set on all PHP environments, and definitely only ones with URL rewrites.
Works on web mode: Yes
Works on CLI mode: No
function webRoot() { return str_replace( $_SERVER['PHP_SELF'], '', /* correct for windows slashes */ str_replace('\\\\','/',__FILE__) ); } 0
function webRoot() { return str_replace( $_SERVER['PHP_SELF'], '', /* correct for windows slashes */ str_replace('\\\\','/',__FILE__) ); } 1
function webRoot() { return str_replace( $_SERVER['PHP_SELF'], '', /* correct for windows slashes */ str_replace('\\\\','/',__FILE__) ); } 2
Trong Apache, bạn xác định đường dẫn đến vhost của mình, chẳng hạn như /var/www/vhosts/MySite. com/httpdocs/ và /var/www/vhosts/YourSite. com/httpdocs/
Đây là gốc trang web của bạn, hãy nhập MySite. com và bạn sẽ được chuyển đến MySite. com.
Tôi đoán rằng trong các chỉ thị của Apache, bạn có một máy chủ DEV để thử các tập lệnh trước khi đưa vào vhost.
Cả /Users/user1/Documents/DEV/++htdocs/03_MySite/ và /var/www/vhosts/MySite. com/httpdocs/ xác định các gốc web khác nhau
Thông thường /var/www/vhosts/MySite. com/httpdocs/ sẽ là những gì khách truy cập nhìn thấy khi họ truy cập trang web của tôi. com
/Users/user1/Documents/DEV/++htdocs/03_MySite/ có thể được truy cập theo nhiều cách tùy thuộc vào httpd của Apache. conf, đây là nơi bạn phát triển trang web của mình trước khi tải lên trang web trực tiếp
Về cơ bản với Apache, bạn có thể có nguồn gốc web không giới hạn như được xác định bởi chỉ thị máy chủ ảo
Tôi không biết bạn đang cố nói gì và điều đó không trả lời câu hỏi của tôi, nhưng dù sao cũng cảm ơn.
Debbie
Bạn sẽ gọi chung một trong hai thứ này là gì…
'/Users/user1/Documents/DEV/++htdocs/03_MySite/' '/var/www/vhosts/MySite.com/httpdocs/');
Gốc là điểm bắt đầu hình thành cành
Thư mục gốc là thư mục chính chứa tất cả các thư mục/tệp con khác. Đó là điểm cao nhất trong hệ thống phân cấp. Khi một thư mục gốc chứa các thư mục con, nó có thể được gọi là cây thư mục
Thư mục gốc của web là thư mục có thể truy cập công khai trên Internet. Nó thường có một số loại trang chỉ mục/trang mặc định, nhưng nó chắc chắn không phải là một yêu cầu
Mỗi tên miền/tên miền phụ có gốc web riêng. Đối với một miền cụ thể nơi trang web/trang web được lưu trữ, thư mục gốc của trang web có thể được đặt tên theo nhiều thứ khác nhau, tùy thuộc vào cách máy chủ lưu trữ được định cấu hình, chẳng hạn như
- htdocs
- www
- wwwroot
- httpdocs
- http_public
Đối với MySite của bạn. com, thư mục httpdocs là thư mục gốc của tên miền đó
Đối với khách truy cập, họ không bao giờ thấy tên thư mục gốc của web hoặc vị trí của thư mục gốc web trên máy chủ. Họ chỉ có quyền truy cập vào nội dung của thư mục gốc của web sau khi truy cập miền (hoặc địa chỉ IP, trong một số trường hợp)
Chỉ cần làm rõ (dường như mọi người luôn giải thích về nó) root web chỉ đơn giản là thư mục vật lý trên hệ điều hành máy chủ mà máy chủ HTTP của bạn đang coi là root (/) cho tên miền
Cách đây một thời gian, tôi cần root web trên một máy chủ không cung cấp nó… vì vậy tôi đã viết một số PHP để tìm ra nó. Do đó, chủ yếu là vấn đề chỉ tước FILE từ cuối $_SERVER[‘PHP_SELF’]
function webRoot() { return str_replace( $_SERVER['PHP_SELF'], '', /* correct for windows slashes */ str_replace('\\\\','/',__FILE__) ); }Chương trình thử nghiệm nhỏ đơn giản
echo '<pre> PHP_SELF : ',$_SERVER['PHP_SELF'],' __FILE__ : ',__FILE__,' Web Root : ',webRoot(),' </pre>';Để hiển thị nó trong thực tế.. hãy chạy trên XAMPP trên máy win7 của tôi. Tôi lấy cái này để xuất
PHP_SELF : /webRoot.php __FILE__ : C:\\web\\webRoot.php Web Root : C:/webLưu ý dấu gạch chéo đảo ngược… Windows sử dụng dấu gạch chéo ngược lại của thế giới *nix đôi khi có thể gây khó chịu
Chạy từ máy chủ cũ của tôi (debian+ISPConfig)
PHP_SELF : /webRoot.php __FILE__ : /var/www/web3/web/webRoot.php Web Root : /var/www/web3/webChạy từ vị trí lưu trữ mới của tôi (freeBSD, nginx có chuyển qua apache)
PHP_SELF : /webRoot.php __FILE__ : /home/cutcodedown/public_html/webRoot.php Web Root : /home/cutcodedown/public_htmlVới việc nó thay đổi từ máy chủ này sang máy chủ khác và hệ điều hành này sang hệ điều hành khác và thậm chí cả *nix distro thành *nix distro, tốt nhất bạn nên lấy giá trị một cách tự động bằng một tập lệnh như thế này… vấn đề duy nhất là, một số thiết lập php bị lỗi không báo cáo . Cũng phải cẩn thận vì một số quy tắc mod_rewrite cũng có thể làm hỏng nó
Ồ, về lý thuyết, đây phải là công việc của $_SERVER[‘DOCUMENT_ROOT’], nhưng nó trả về thư mục con hiện đang được chạy từ đó, chứ không phải thư mục gốc của máy chủ http thực tế… và nếu các tệp cấu hình php bị đặt sai, nó sẽ xuất ra toàn bộ thông tin vô nghĩa không đáng tin cậy. Tôi chưa bao giờ có thể sử dụng giá trị do DOCUMENT_ROOT trả về một cách có ý nghĩa
Ngay cả khi nó hoạt động bình thường, nó cũng không trả về web root mà chỉ trả về doc root… bạn chạy nó trong \web\ est\webroot. php DOCUMENT_ROOT đôi khi sẽ trả về \web, đôi khi trả về \web\ est, đôi khi trả về \, đôi khi không trả lại gì cả, và tôi đã thấy nó đôi khi trả về toàn tiếng vô nghĩa giống như một hàm băm được tạo ngẫu nhiên