Hướng dẫn php include file path different directory - php bao gồm đường dẫn tệp thư mục khác nhau

Bạn có thể đến gốc từ trong mỗi trang web bằng

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
0. Để chỉ thử nghiệm, bạn có thể lặp lại con đường để đảm bảo nó hoạt động, nếu bạn làm đúng cách. Bạn không bao giờ muốn hiển thị các đường dẫn máy chủ cục bộ cho những thứ như bao gồm và yêu cầu.For testing ONLY you can echo out the path to make sure it's working, if you do it the right way. You NEVER want to show the local server paths for things like includes and requires.

Trang web 1

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/';

Bao gồm trong trang web một sẽ ở:

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';

Trang web 2

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';

Mã thực tế để truy cập bao gồm từ SITE1 bên trong trang2 mà bạn sẽ nói:

include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');

Nó sẽ chỉ sử dụng đường dẫn tương đối của tệp thực hiện truy vấn nếu bạn cố gắng truy cập nó bằng cách loại trừ

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
1 và
echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
2 SLASH:

 //(not as fool-proof or non-platform specific)
 include('../includes/file_from_site_1.php');

Các đường dẫn bao gồm không có vị trí trong mã ở mặt trước (trực tiếp) của trang web ở bất cứ đâu, và chỉ nên được bảo mật và sử dụng trong môi trường sản xuất.

Ngoài ra, đối với các URL trên trang web, bạn có thể làm cho chúng liên quan đến miền. Các trình duyệt sẽ tự động điền vào phần còn lại vì họ biết họ đang xem trang nào. Vì vậy, thay vì:

<a href='http://www.__domain__name__here__.com/contact/'>Contact</a>

Bạn nên sử dụng:

<a href='/contact/'>Contact</a>

Đối với SEO tốt, bạn sẽ muốn đảm bảo rằng các URL cho blog không tồn tại trong miền khác, nếu không nó có thể được đánh dấu là một trang web trùng lặp. Với điều đó đã được nói, bạn cũng có thể muốn thêm một dòng vào tệp

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
3 của mình chỉ cho SITE1:ONLY site1:

User-agent: *
Disallow: /blog/

Các khả năng khác:

Tra cứu địa chỉ IP của bạn và bao gồm đoạn mã này:

function is_dev(){
  //use the external IP from Google.
  //If you're hosting locally it's 127.0.01 unless you've changed it.
  $ip_address='xxx.xxx.xxx.xxx';

  if ($_SERVER['REMOTE_ADDR']==$ip_address){
     return true;
  } else {
     return false;
  } 
}

if(is_dev()){
    echo $_SERVER['DOCUMENT_ROOT'];       
}

Hãy nhớ nếu ISP của bạn thay đổi IP của bạn, vì trong bạn có IP động DCHP, bạn sẽ cần thay đổi IP trong tệp đó để xem kết quả. Tôi sẽ đặt tập tin đó trong một bao gồm, sau đó yêu cầu nó trên các trang để gỡ lỗi.

Nếu bạn ổn với các phương thức hiện đại như sử dụng nhật ký bảng điều khiển trình duyệt, bạn có thể thực hiện việc này và xem nó trong giao diện gỡ lỗi của trình duyệt:

if(is_dev()){
    echo "<script>".PHP_EOL;
    echo "console.log('".$_SERVER['DOCUMENT_ROOT']."');".PHP_EOL;
    echo "</script>".PHP_EOL;       
}

Chào mừng bạn đến với một hướng dẫn ngắn về cách bao gồm các tệp từ các thư mục khác trong PHP. Cần tải một tệp khác trong PHP, nhưng nó nằm trong một thư mục khác? Không có vấn đề, nó là một sửa chữa rất đơn giản.

Cách dễ nhất để bao gồm một tệp từ một thư mục khác là sử dụng đường dẫn tuyệt đối (chỉ định đường dẫn đầy đủ đến tệp). Ví dụ:

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
4

Điều đó bao gồm những điều cơ bản nhanh chóng, nhưng chúng ta hãy đi qua nhiều chi tiết hơn trong hướng dẫn này - đọc tiếp!

Tôi đã bao gồm một tệp zip với tất cả các mã nguồn ví dụ khi bắt đầu hướng dẫn này, vì vậy bạn không phải sao chép mọi thứ, hoặc nếu bạn chỉ muốn đi thẳng vào.

Slide nhanh

Hướng dẫn php include file path different directory - php bao gồm đường dẫn tệp thư mục khác nhau

MỤC LỤC

Tải xuống & ghi chú

Hướng dẫn php include file path different directory - php bao gồm đường dẫn tệp thư mục khác nhau

Đầu tiên, đây là liên kết tải xuống đến mã nguồn ví dụ như đã hứa.

Ghi chú nhanh

Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với toàn bộ thế giới, nếu bạn cần câu trả lời khẩn cấp, vui lòng kiểm tra danh sách các trang web của tôi để nhận trợ giúp lập trình.

Mã hóa ví dụ Tải xuống

Nhấn vào đây để tải xuống mã nguồn, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên đó hoặc sử dụng nó trong dự án của riêng bạn.

Được rồi, bây giờ chúng ta hãy tìm hiểu thêm về cách PHP hoạt động với các đường dẫn tệp.

1) Đường dẫn tệp tương đối vs tuyệt đối

D: \ http \ 1a-demo.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
0

D: \ http \ 1b-demo.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
1

Đầu tiên, giới thiệu nhanh về 2 Điều khoản:

  • Đường dẫn tương đối-Một đường dẫn tay ngắn của người Viking dựa trên thư mục làm việc hiện tại. A “short-hand” path that is based on the current working directory.
  • Đường dẫn tuyệt đối - đường dẫn đầy đủ đến tệp. The full path to the file.

Đúng, con đường tuyệt đối nên tự giải thích. Nhưng con đường tương đối là con đường gây nhầm lẫn cho hầu hết người mới bắt đầu.

2) Thư mục làm việc hiện tại là gì?

D: \ http \ 2-demo.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
2

Thư mục làm việc hiện tại của người Viking là gì? Chúng ta có thể kiểm tra nhanh với

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
5 và nó chỉ đơn giản là thư mục có tập lệnh được đặt. Đối với ví dụ này:

  • echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
    
    6 được đặt bên trong
    echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
    
    7.
  • Truy cập
    echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
    
    6 sẽ đặt thư mục làm việc hiện tại thành
    echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
    
    7.
  • Đường dẫn tương đối phụ thuộc vào thư mục làm việc hiện tại.
    • include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
      
      0 sẽ quyết tâm đến
      include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
      
      1.
    • include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
      
      2 sẽ quyết tâm đến
      include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
      
      3.

3) Thư mục làm việc hiện tại - Sự nhầm lẫn

D: \ http \ 3a-outside.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
3

D: \ http \ lib \ 3b-inside.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
4

Sẵn sàng cho phần khó hiểu về thư mục làm việc hiện tại?

  • Hãy lưu ý nơi các tập lệnh được đặt trong ____________ 34 và
    include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
    
    5.
  • Nếu chúng ta truy cập trực tiếp
    include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
    
    6, thư mục làm việc hiện tại sẽ được đặt thành
    echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
    
    7.
  • Nhưng khi chúng tôi truy cập trực tiếp ____38, thư mục làm việc hiện tại được đặt thành
    include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
    
    9 thay thế.

Có, thư mục làm việc hiện tại được cố định vào thư mục của tập lệnh đầu tiên đang được gọi. Đây là một cạm bẫy phổ biến giữa những người mới bắt đầu, không biết thư mục làm việc hiện tại hoạt động như thế nào.current working directory is fixed to the folder of the first script that is being called. This is a common pitfall among beginners, not knowing how the current working directory works.

4) Thư mục của tập lệnh hiện tại

D: \ http \ 4a-outside.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
5

D: \ http \ lib \ 4b-inside.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
6

Nếu bạn muốn lấy thư mục của tập lệnh hiện tại, hãy sử dụng hằng số ma thuật

 //(not as fool-proof or non-platform specific)
 include('../includes/file_from_site_1.php');
0 thay thế.folder of the current script itself, use the
 //(not as fool-proof or non-platform specific)
 include('../includes/file_from_site_1.php');
0 magic constant instead.

5) Con đường tuyệt đối bán tự động

5a-path.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
7

lib/5b-config.php

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
8

Cách đáng tin cậy nhất để đối phó với các đường dẫn tệp sau đó là gì? Những gì tôi thường làm:

  • Cấu trúc dự án đúng cách, giữ các tệp cấu hình và thư viện trong thư mục
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    1 được bảo vệ.
  • Tạo
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    2 để chứa cài đặt cơ sở dữ liệu, khóa bí mật và đường dẫn tệp.
  • Trong
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    2,
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    4 sẽ luôn giải quyết cho thư mục
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    1 mà nó đang ngồi.
  • Sau đó,
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    6 sẽ giải quyết cho cha mẹ của thư mục
     //(not as fool-proof or non-platform specific)
     include('../includes/file_from_site_1.php');
    
    1, thư mục cơ sở của dự án.

Đó là tất cả,

 //(not as fool-proof or non-platform specific)
 include('../includes/file_from_site_1.php');
8 và
 //(not as fool-proof or non-platform specific)
 include('../includes/file_from_site_1.php');
9 hiện là một đường dẫn tệp tuyệt đối và không bao giờ có thể sai.

Bổ sung) bao gồm và yêu cầu là trường hợp nhạy cảm

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
9

Cuối cùng, một từ nhỏ của lời nhắc - Windows không nhạy cảm với trường hợp, nhưng Mac và Linux là. Hãy cẩn thận với tên tệp và thư mục.

Tài liệu tham khảo & liên kết

  • Hướng dẫn sử dụng PHP chính thức - Yêu cầu
  • Hướng dẫn sử dụng PHP chính thức - bao gồm
  • require_once
  • include_once
  • Đường dẫn tuyệt đối & tương đối trong PHP - mã Boxx

Bảng gian lận infographic

Hướng dẫn php include file path different directory - php bao gồm đường dẫn tệp thư mục khác nhau
Bao gồm đường dẫn tệp trong PHP (bấm để phóng to)

KẾT THÚC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến cuối hướng dẫn này. Tôi hy vọng rằng nó đã giúp bạn hiểu rõ hơn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, xin vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc!

Làm cách nào để liên kết một tệp PHP với một thư mục khác?

Cách dễ nhất để bao gồm một tệp từ một thư mục khác là sử dụng đường dẫn tuyệt đối (chỉ định đường dẫn đầy đủ đến tệp). Ví dụ: bao gồm "C: \\ http \\ lib \\ script ...
2-Demo. PHP được đặt bên trong d: \ http ..
Truy cập 2-demo. ....
Đường dẫn tương đối phụ thuộc vào thư mục làm việc hiện tại ..

Làm cách nào để đưa một tệp trong thư mục cha trong PHP?

PHP bao gồm tập tin trong thư mục cha..
// Nếu máy chủ của bạn không giải quyết được tệp từ thư mục cha mẹ bằng cách sử dụng ..
Bao gồm '../somefilein_parent.php'.
// Hãy thử điều này (sử dụng thư mục mẹ liên quan đến tập lệnh):.
Bao gồm __dir__."/..

__ dir __ trong PHP là gì?

__Dir__ có thể được sử dụng để có được thư mục làm việc mã hiện tại.Nó đã được giới thiệu trong PHP bắt đầu từ phiên bản 5.3.Nó tương tự như sử dụng dirname (__ file__).Thông thường, nó được sử dụng để bao gồm các tệp khác có trong một tệp được bao gồm.used to obtain the current code working directory. It has been introduced in PHP beginning from version 5.3. It is similar to using dirname(__FILE__). Usually, it is used to include other files that is present in an included file.

Những gì được bao gồm () và yêu cầu () hàm?

Câu lệnh bao gồm (hoặc yêu cầu) lấy tất cả các văn bản/mã/đánh dấu tồn tại trong tệp được chỉ định và sao chép nó vào tệp sử dụng câu lệnh bao gồm.Bao gồm các tệp rất hữu ích khi bạn muốn bao gồm cùng một PHP, HTML hoặc văn bản trên nhiều trang của một trang web.. Including files is very useful when you want to include the same PHP, HTML, or text on multiple pages of a website.