PHP cơ sở_path

Tùy thuộc vào cấu hình máy chủ của bạn, việc lấy thông tin đường dẫn chính xác có thể là một thách thức. Ví dụ: PHP không cung cấp biến sẽ trả về URL cơ sở của trang web của bạn. Để trợ giúp, bạn có thể sử dụng các đoạn mã sau để nhận đường dẫn tuyệt đối, gốc tài liệu và URL cơ sở tương ứng

Lấy đường dẫn tuyệt đối

Nếu tập lệnh của bạn được bao gồm trong /path/directory/, thì đoạn mã này

$base_dir = __DIR__;

trả về một cái gì đó như thế này [tùy thuộc vào đường dẫn máy chủ thực tế]

/var/www/path/example.com/httpdocs/path/directory

Lưu ý rằng kết quả không bao gồm dấu gạch chéo

Lấy tài liệu gốc

Cách dễ nhất, sạch nhất để lấy tài liệu gốc

$doc_root = $_SERVER['DOCUMENT_ROOT'];

mà trả về một cái gì đó giống như

$doc_root = $_SERVER['DOCUMENT_ROOT'];
0

Lưu ý rằng kết quả không bao gồm dấu gạch chéo

Ngoài ra, bạn có thể làm điều này

$doc_root = preg_replace["!${_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']];

Cách thứ nhất được ưu tiên, cách thứ hai là thông tin của bạn

Nhận URL cơ sở của tập lệnh hiện tại

Đoạn mã này trả về URL cơ sở của tập lệnh hiện tại. Vì vậy, giả sử rằng tập lệnh của chúng tôi được đưa vào bên trong /path/directory/ tại

$doc_root = $_SERVER['DOCUMENT_ROOT'];
2. Để lấy URL cơ sở, hãy áp dụng đoạn mã sau

base_path[] thêm dấu "/" vào đầu và cuối đường dẫn trả về nếu đường dẫn không trống. Ít nhất, điều này sẽ trả về "/"

ví dụ

36 cuộc gọi đến base_path[] 10 chuỗi tham chiếu đến 'base_path'

Tập tin

cốt lõi/bao gồm/chung. inc, line 3318Các hàm thông dụng mà nhiều module Backdrop cần tham khảo

Mã số

function base_path[] {
  return $GLOBALS['base_path'];
}

Xác định gốc tài liệu, còn được gọi là đường dẫn cơ sở, rất quan trọng khi bạn muốn bao gồm các tệp hoặc làm việc với hệ thống tệp;

1438 lượt xem

Bởi. Jacob

Đã chỉnh sửa. 2021-02-28 16. 14

Khi bao gồm các tệp hoặc làm việc với hệ thống tệp từ các tập lệnh PHP, cách tốt nhất là sử dụng các đường dẫn tuyệt đối; . Thay vào đó, bây giờ tôi xác định BASE_PATH của riêng mình ở gốc thành phần của các dự án của tôi [Thông thường chỉ mục. tệp php]

Vấn đề là gốc tài liệu có thể không đề cập đến những gì chúng ta mong đợi và nó cũng có những điểm không nhất quán khác, chẳng hạn như thiếu dấu gạch chéo đuôi trên các thư mục. Để tránh điều này, bây giờ tôi xác định biến đường dẫn cơ sở của riêng mình, sử dụng dấu gạch chéo lên làm dấu phân cách thư mục — và đối với các thư mục, dấu gạch chéo đuôi luôn được bao gồm

Tất cả các đường dẫn phải được viết bằng cách sử dụng dấu gạch chéo lên làm dấu tách thư mục, vì điều này được hầu hết các hệ thống hỗ trợ

Windows cũng sẽ hoạt động tốt khi sử dụng dấu gạch chéo lên — trên thực tế, ngay cả khi sử dụng kết hợp dấu gạch chéo ngược và dấu gạch chéo lên cũng sẽ hoạt động tốt — để đảm bảo tính nhất quán, tuy nhiên, tốt nhất là chúng ta nên sử dụng giống nhau trong toàn bộ mã

Một lý do khác cho chính sách này là dấu gạch chéo ngược có thể gây ra sự cố trong một số trường hợp, vì dấu gạch chéo ngược có ý nghĩa đặc biệt trong PHP và do đó cần phải thoát khi được sử dụng trong đường dẫn, ngay cả khi được sử dụng trong dấu nháy đơn

Từ PHP5. 3 trở đi, chúng ta có thể sử dụng __DIR__

define['BASE_PATH', rtrim[preg_replace['#[/\\\\]{1,}#', '/', __DIR__], '/'] . '/'];

Trong các phiên bản cũ hơn

define['BASE_PATH', rtrim[preg_replace['#[/\\\\]{1,}#', '/', realpath[dirname[__FILE__]]], '/'] . '/'];

Xử lý bao gồm

Ở đầu tệp chỉ mục, chúng tôi thường xác định hằng số BASE_PATH. Hằng số này có thể được sử dụng khi bao gồm các tệp thông qua bao gồm hoặc yêu cầu và cũng có thể được truy cập từ bên trong các tệp được bao gồm, mặc dù điều này tốt nhất nên tránh

Nếu một số phương thức lớp phụ thuộc vào BASE_PATH, có lẽ tốt hơn là chuyển nó làm đối số cho phương thức hoặc thông qua phép nội xạ phụ thuộc thông qua một đối tượng cài đặt

Dưới đây là một ví dụ về cách BASE_PATH được xác định

define['BASE_PATH', rtrim[preg_replace['#[/\\\\]{1,}#', '/', realpath[dirname[__FILE__]]], '/'] . '/'];

Mã hoạt động như thế này

  1. realpath[dirname[__FILE__]] tạo đường dẫn tuyệt đối cho thư mục mẹ của tập lệnh đang chạy
  2. preg_replace đảm bảo rằng chúng tôi chỉ sử dụng dấu gạch chéo lên làm dấu phân cách. Ghi chú. Phản ứng dữ dội cần được thoát như thế này "\" khi được sử dụng trong các biểu thức chính quy
  3. rtrim[] xóa dấu gạch chéo ở cuối [nếu có]
  4. Cuối cùng, một dấu gạch chéo được thêm thủ công. Điều này là cần thiết để tránh nhầm lẫn khi sử dụng hằng số BASE_PATH

Tự động bao gồm các tập tin

Hiện tại, các nhà phát triển cần nhớ sử dụng dấu gạch chéo lên một cách nhất quán. Đây không phải là một vấn đề lớn vì hầu hết có thể sẽ phát triển trên Linux. Tuy nhiên, một giải pháp có thể là bao gồm các tệp thông qua một chức năng hoặc trình tải nội dung thay thế

Đây không phải là điều chúng tôi hiện đang làm, nhưng nó cũng sẽ là một cách hữu ích để bao gồm các tệp động nếu đây là điều chúng tôi có thể cần trong tương lai

$files_to_include = array[
  BASE_PATH . 'lib/db_class/db_class.php',
  BASE_PATH . 'lib/translator/translator_class.php'
];

function dynamic_require[$files_array] {
  foreach [$files_array as $file] {
   require preg_replace['#[/\]{1}#', '/', $file];
  }
}

DIRECTORY_SEPARATOR không được khuyến nghị

Các nhà phát triển không nên sử dụng DIRECTORY_SEPARATOR, vì hầu hết các hệ thống sẽ hiểu rõ dấu gạch chéo về phía trước. Vẫn có thể có những trường hợp thích hợp mà nó có thể hữu ích, nhưng chúng tôi tránh nó để bao gồm

DIRECTORY_SEPARATOR là hằng số được xác định trước trong PHP. Nó chứa trình phân tách thư mục mặc định được sử dụng trên hệ thống nơi tập lệnh đang chạy

Đường dẫn cơ sở PHP là gì?

Việc xác định Gốc tài liệu , còn được gọi là Đường dẫn cơ sở, rất quan trọng khi bạn muốn bao gồm các tệp hoặc làm việc với hệ thống tệp; . 1388 lượt xem. đã chỉnh sửa. 2021-02-28 16. 14.

Làm cách nào để đặt đường dẫn của tệp trong PHP?

ini, hãy làm theo các bước sau. .
mở php. ini trong trình chỉnh sửa. .
Thêm dòng sau vào php. tập tin ini. Thay thế tên người dùng bằng tên người dùng Dịch vụ lưu trữ A2 của bạn và thay thế thư mục bao gồm bằng tên của thư mục bao gồm. bao_path = ". /home/tên người dùng/gồm_thư mục"
Lưu các tập tin. Đường dẫn bao gồm hiện được đặt

Làm cách nào để lấy đường dẫn của một thư mục trong PHP?

Để lấy đường dẫn thư mục gốc, bạn có thể sử dụng _DIR_ hoặc dirname[] . echo dirname[__FILE__]; .

Làm cách nào để lấy tệp từ đường dẫn trong PHP?

Cú pháp. $filename = pathinfo[path]; Ví dụ. Ví dụ này giải thích hàm pathinfo[] sẽ trả về thông tin về đường dẫn. Ở đây, chúng tôi sẽ sử dụng $filename['basename'], khi chúng tôi muốn truy cập tên tệp.

Chủ Đề