Php yêu cầu tập tin từ một thư mục khác
Đối với khách truy cập trang web, đó hoàn toàn là một máy chủ ảo, theo nhiều cách khác với máy chủ thực. Không có tập tin cho người bắt đầu. Tôi biết, thoạt nghe thật khó tin, nhưng đó là sự thật. Trong địa chỉ như 8, 9 không phải là tệp. Đó là một phần của URI, một tài nguyên ảo. Có thể có hoặc không thể có một tệp thực với tên như vậy, nhưng điều đó không thành vấn đề. Trình duyệt của bạn không thể biết điều đó và không cần. Tất cả những gì nó cần biết là một địa chỉ Show
Mặt khác, đối với nhà phát triển trang web, trang web của họ là một chương trình nhất định chạy trên một máy chủ cụ thể, trên một máy tính thực có ổ cứng, tệp và thư mục. Và tập lệnh PHP của bạn, trong khi đọc các tệp dữ liệu hoặc bao gồm các tập lệnh khác, đang hoạt động với các tệp thực như vậy tồn tại trên phương tiện vật lý Vì vậy thuyết nhị nguyên này là gốc rễ của nhiều vấn đề Ban đầu, người dùng PHP rất nhầm lẫn những vấn đề này, làm những việc như không thể định vị tệp hiện có, nhầm lẫn siêu liên kết với tệp, bao gồm tệp cục bộ qua HTTP, v.v. Tuy nhiên, để sắp xếp những thứ này ra, tất cả những gì bạn cần là nắm được hai khái niệm đơn giản.
Sự khác biệt giữa đường dẫn tuyệt đối và tương đốiNó khá đơn giản
Nó hoàn toàn giống với các hướng dẫn trong cuộc sống thực. Với địa chỉ tuyệt đối, địa chỉ bưu chính, chẳng hạn như "7119 W Sunset Blvd West Hollywood, CA 90046", bạn có thể tìm thấy vị trí từ bất cứ đâu. Tuy nhiên, với các chỉ dẫn tương đối, chẳng hạn như "giữ ba khối theo cách này rồi rẽ sang phải" sẽ chỉ hoạt động từ vị trí hiện tại, nếu không sẽ khiến bạn lạc lối Vì vậy, nó đi theo những con đường trong thế giới máy tính. được cung cấp địa chỉ tuyệt đối, bạn luôn có thể đến nơi, bất kể bạn bắt đầu từ đâu. Trong khi đường dẫn tương đối phức tạp và nên được sử dụng một cách thận trọng, chỉ khi bạn biết chắc chắn mình đang ở đâu vào lúc này đường dẫn tuyệt đốiVì vậy, một lần nữa. một đường dẫn tuyệt đối là một đường dẫn bắt đầu từ gốc hệ thống Một số ví dụ về đường dẫn tuyệt đối
Lưu ý rằng trong các hệ thống giống Unix (và máy chủ web), gốc được định nghĩa là dấu gạch chéo - 0. Và điều này rất quan trọng để biết. Nó không chỉ là một điểm đánh dấu, mà còn là một địa chỉ đủ điều kiện, một đường dẫn. Nhập 0 vào bảng điều khiển unix của bạn và bạn sẽ đến thư mục gốc. Điều này cũng đúng với tất cả các máy chủ web. Vì vậy, bạn có thể biết rằng trong địa chỉ 1, dấu gạch chéo ở cuối không phải để trang trí mà là một địa chỉ thông thường - địa chỉ của trang chủTrên Windows, hệ thống tệp không có gốc chung cho toàn bộ hệ thống mà được phân chia giữa các đĩa, do đó, đường dẫn tuyệt đối bắt đầu từ ký tự ổ đĩa. Trong khi mỗi đĩa có gốc riêng, đó là dấu gạch chéo ngược - 2. Vì vậy, bạn có thể gõ 3 và truy cập thư mục gốc của đĩa hiện tạiVì vậy, bạn có thể nói rằng các cửa sổ khá khó hiểu, nhưng để đơn giản, chúng tôi sẽ giả vờ rằng chúng tôi chỉ có một đĩa và trong ranh giới của nó, các quy tắc gần giống như trong Unix Vì vậy, bây giờ bạn có thể nói một đường dẫn tuyệt đối từ một đường dẫn tương đối - nó bắt đầu từ gốc, đó là
đường dẫn tương đốiNếu bạn không cung cấp root, điều đó có nghĩa là đường dẫn của bạn là tương đối Ví dụ đơn giản nhất về đường dẫn tương đối chỉ là tên tệp, chẳng hạn như 8. Vì vậy, người ta nên cẩn thận với các đường dẫn tương đối. Nếu thư mục hiện tại của bạn là 9 thì 8 sẽ là một, nhưng nếu bạn chuyển nó sang 01 thì nó sẽ là một thư mục khácCác ví dụ đường dẫn tương đối khác
Điều bạn nên biết là hệ thống, khi gặp một đường dẫn tương đối, luôn xây dựng nó thành một đường dẫn tuyệt đối. Cả máy chủ web và hệ thống tệp đều đang làm điều đó nhưng theo những cách khác nhau. Vì vậy, hãy tìm hiểu chúng gốc tài liệuĐây là phần thú vị nhất. Có một điểm mà thế giới thực gặp thế giới ảo Hãy tưởng tượng có một tệp như 07. Trong khi trên máy chủ web, địa chỉ của nó là 08Và ở đây điểm có thể được nhìn thấy rõ ràng. có một phần, chung cho cả hai địa chỉ. 09, đó là nguồn gốc của sự nhầm lẫnĐối với trình duyệt, đường dẫn này hoàn toàn tuyệt đối, bắt đầu từ thư mục gốc của máy chủ web. 90 trên ổ cứng. Để có được đường dẫn làm việc đến tệp này, chúng ta phải thêm phần còn thiếu. Trong ví dụ của chúng tôi, nó là ________ 191, được gọi là ________ 192 và là tùy chọn cấu hình quan trọng nhất cho các tương tác hệ thống tệp. Trong PHP, bạn có thể truy cập nó qua 93Vì vậy, bây giờ bạn có thể nói rằng để làm cho bất kỳ đường dẫn hệ thống tệp nào hoạt động, nó phải là đường dẫn tuyệt đối và được xây dựng bằng cách sử dụng 92. Vì vậy, một mã PHP chính xác để truy cập 09 từ PHP sẽ là
ở đây chúng tôi đang sử dụng một phần máy chủ web của đường dẫn, thêm vào trước nó bằng tài liệu gốc. thì đấy Đường dẫn máy chủ webđơn giản hơn nhiều Giống như đã nói trước đây, đối với trình duyệt, không có tệp nào trên máy chủ. Người dùng trang web không bao giờ có quyền truy cập vào hệ thống tệp của máy chủ. Đối với trình duyệt, chỉ có một trang gốc. Đó là hằng số và luôn luôn chỉ đơn giản là một dấu gạch chéo Do đó, để tạo một liên kết HTML tuyệt đối, chỉ cần tạo liên kết đó từ thư mục gốc của trang web - và bạn sẽ không bao giờ gặp lại lỗi 404 đối với tệp hiện có Hãy tưởng tượng trang web của bạn có hai phần, 0và trong 96 bạn muốn liên kết tới 97. Nếu bạn làm như vậy, 98, thì trình duyệt sẽ không tìm thấy nó. Hãy nhớ rằng, nó luôn cố gắng xây dựng liên kết đến liên kết đầy đủ, sử dụng vị trí hiện tại, là 9 và do đó, đường dẫn kết quả là 10, điều này là sai. Để làm cho đúng, chúng ta phải làm cho liên kết này trở nên tuyệt đối, bắt đầu từ thư mục gốc của trang web. 11Vì vậy, nó áp dụng cho tất cả các liên kết nội bộ trên trang web - hình ảnh, tệp js và css, siêu liên kết hoặc bất kỳ tài nguyên nào khác có thể được nhấp vào hoặc tải trên trang Đối với tài nguyên cục bộ, tốt hơn là chỉ tạo đường dẫn, không có giao thức và tên miền - như 11. Trong khi đối với các tài nguyên bên ngoài, các thuộc tính này là bắt buộc và do đó, nó phải là một URL đủ điều kiện như 13Tập lệnh bảng điều khiển. Điểm vào duy nhấtThật đáng tiếc, nhưng đối với tập lệnh bảng điều khiển, biến 93 hữu ích của chúng tôi không khả dụng. Vì vậy, chúng tôi buộc phải sử dụng các đường dẫn liên quan đến tập lệnh gọi, xuất phát từ vị trí của tập lệnh hiện tạiVí dụ: nếu ứng dụng của bạn được lưu trữ trên 15 và có hai thư mục con, 16 và 17, và bạn muốn truy cập thư mục sau từ thư mục trước, bạn có thể viết đoạn mã sau 9Mặc dù về mặt kỹ thuật là tuyệt đối (bắt đầu từ dấu gạch chéo), đường dẫn này về cơ bản là liên quan đến tập lệnh gọi, bởi vì nếu tập lệnh gọi sẽ được chuyển vào thư mục khác, thì nó sẽ không tìm thấy tệp cấu hình nữa Đây là lý do tại sao nên sử dụng một điểm vào duy nhất cho ứng dụng của bạn. Hoặc - như trong trường hợp của chúng tôi - hai điểm vào, một cho các yêu cầu web và một cho các lệnh của bảng điều khiển Vì vậy, đối với ứng dụng hư cấu của chúng tôi, chúng tôi sẽ có ba tệp - một điểm vào cho mặt trước web, một điểm vào cho các ứng dụng bảng điều khiển và một tệp bootstrap
Sau đó, chúng ta có thể viết đoạn mã sau (trong số những thứ khác) vào 18 1để xác định hằng số 19 chứa đường dẫn đến thư mục gốc của ứng dụng của chúng tôi (ngay phía trên thư mục 30)Và sau đó trong cả 31 và 32 3để cung cấp tất cả nội dung bootstrap, bao gồm hằng số ROOT_DIR. Từ giờ trở đi, chúng ta có thể sử dụng nó để xây dựng các đường dẫn tuyệt đối bắt đầu từ thư mục gốc (miễn là các tập lệnh của chúng ta được gọi thông qua điểm vào web hoặc bảng điều khiển) 7Có thể tìm thấy các triển khai ví dụ trong Laravel's Artisan hoặc Symfony Console Tất nhiên, cả hai điểm vào nên triển khai một loại trình phân giải để gọi tất cả các trang và tập lệnh bảng điều khiển khác nhưng điều đó hơi nằm ngoài phạm vi của bài viết này Làm cách nào để bao gồm tệp thư mục trong PHP?Để bao gồm tất cả các tệp PHP từ thư mục cùng một lúc cần một vòng lặp foreach. . Ví dụ. Ví dụ này chứa bốn tệp PHP (file1. . Tạo tệp1. php trong thư mục 'myGeek' Tạo tệp2. php trong thư mục 'myGeek' Tạo tệp3. php trong thư mục 'myGeek' Tạo tệp4. php trong thư mục 'myGeek' Tạo chính. php bên ngoài thư mục __ dir __ trong PHP là gì?Có thể sử dụng __DIR__ để lấy thư mục làm việc của 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.
Làm cách nào để gọi một tệp từ một thư mục khác trong PHP?Cách dễ nhất để bao gồm 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 đủ tới tệp) . Ví dụ: bao gồm "C. \\http\\lib\\script. Đối với ví dụ này. 2-bản trình diễn.
Làm cách nào để bao gồm các tệp trong PHP từ thư mục mẹ?Nhận thư mục mẹ từ bên trong thư mục con
. '/ví dụ. php'; . include file require_once(dirname(plugin_dir_path(__FILE__)) . '/ví dụ. |