Bài đăng này kết thúc bộ ba bài đăng của chúng tôi về cách lấy thông tin đường dẫn tệp và thư mục bằng PHP và WordPress. Trong bài đăng liên quan đến đường dẫn cuối cùng này, bạn sẽ có nhiều cách để lấy và bao gồm các tệp từ thư mục mẹ, thư mục con, thư mục liền kề và thậm chí là cùng một thư mục, chỉ để làm tròn mọi thứ
Nhận thư mục mẹ từ trong thư mục con
Đối với các plugin WordPress, đây là cách lấy và/hoặc bao gồm một tệp nằm trong thư mục mẹ
// get file path
echo dirname[plugin_dir_path[__FILE__]] . '/example.php';
// include file
require_once[dirname[plugin_dir_path[__FILE__]] . '/example.php'];
Lưu ý rằng bạn có thể tùy chỉnh đoạn mã này bằng cách thay đổi example.php
thành tên của tệp mà bạn muốn lấy hoặc đưa vào
Tôi thường thấy rằng những thứ đơn giản là những thứ bị lãng quên hoặc không biết nhất. Gần đây, tôi đang giúp đồng nghiệp học PHP và tôi thường được hỏi về cách di chuyển lên và xuống các cấp độ thư mục liên quan đến tệp hiện tại
Tôi biết hai cách tương đối đơn giản để thực hiện việc này; .
and one using realpath[].
Chúng tôi cũng sẽ sử dụng 'Hằng số ma thuật' trong bài đăng này, nhưng tôi đã giải thích những điều này một chút ở đây một cách khéo léo
Cấp thư mục sử dụng dirname[]
Nếu bạn đang sử dụng PHP 7. 0 trở lên thì cách tốt nhất để điều hướng từ đường dẫn tệp hoặc thư mục hiện tại của bạn là sử dụng dirname[]. Hàm này sẽ trả về thư mục mẹ của bất kỳ đường dẫn nào chúng ta chuyển đến nó. Trong PHP 7 trở lên, chúng tôi có thể chỉ định số lượng cấp độ chúng tôi muốn di chuyển. Để sử dụng điều này, trước tiên chúng tôi chuyển đường dẫn tệp hoặc thư mục dưới dạng một chuỗi, sau đó chỉ định số cấp chúng tôi muốn chuyển lên từ thư mục đó
Giả sử rằng tập lệnh của chúng ta đang chạy trong /path/to/file/index. php
$dir = dirname[__DIR__, 2];
echo $dir; // Result = "/path"
Bằng cách sử dụng 'Magic Constant' '__DIR__' và chỉ định cấp độ 2, chúng tôi đang yêu cầu dirname[] trả về 2 cấp độ từ cấp độ gốc của '__DIR__'. Trong trường hợp này '__DIR__' là '/path/to/file', nên cao hơn 2 cấp là '/path'
Nhớ. dirname[] trả về thư mục mẹ, vì vậy sử dụng ‘dirname[__DIR__]’ sẽ trả về thư mục mẹ của ‘__DIR__’
Nếu chúng ta sử dụng '__FILE__' thì hơi khác một chút
$dir = dirname[__FILE__, 2];
echo $dir; // Result = "/path/to"
Vì '__FILE__' trả về tệp trong chuỗi, nên thư mục mẹ là '/path/to/file'. Bằng cách chỉ định mức 2, giờ đây chúng tôi chuyển sang ‘/path/to’ thay vào đó
Các cấp thư mục sử dụng realpath[]
Nếu bạn đang sử dụng phiên bản PHP cũ hơn thì may mắn thay, chúng ta có thể sử dụng realpath[]
'Magic Constant' '__DIR__' đã được thêm vào PHP trong 5. 3, vì vậy đối với người 5. 3 đến 5. 6 chúng ta có thể di chuyển các cấp thư mục như thế này
Một lần nữa, giả sử rằng tập lệnh của chúng ta đang chạy trong /path/to/file/index. php
$dir = realpath[__DIR__ . '/..'];
echo $dir; // Result = "/path/to"
Trong ví dụ này, realpath[] giải quyết tham chiếu ‘/. ’ liên quan đến ‘__DIR__’ và đưa chúng tôi lên 1 cấp cao hơn. Nếu chúng ta sử dụng ‘/. /. ’ sau đó chúng tôi sẽ chuyển lên 2 cấp cao hơn, v.v.
Nếu chúng ta quay trở lại xa hơn PHP 5. 3 thì chúng ta sẽ phải sử dụng realpath[], dirname[] và ‘Magic Constant’ ‘__FILE__’
Về cơ bản, realpath[] sẽ không chấp nhận tệp, chỉ chấp nhận đường dẫn. Điều này có nghĩa là chúng ta phải xóa 'chỉ mục. php' từ chuỗi '__FILE__' của chúng tôi. Có một số cách mà chúng ta có thể đạt được điều này, một trong số đó là sử dụng dirname[]
$dir = realpath[dirname[__FILE__] . '/..'];
echo $dir; // result = "/path/to"
Ví dụ này lấy thư mục mẹ của ‘__FILE__’ và sau đó giải quyết ‘/. ’ sử dụng realpath[] để di chuyển nó cao hơn 1 cấp
A key problem to hierarchical include trees is that PHP processes include paths relative to the original file, not the current including file.
________số 8
this will generate a base path relative to the current file, which will then allow an include behavior similar to C/C++.
$dir = dirname[__DIR__, 2];
echo $dir; // Result = "/path"
0$dir = dirname[__DIR__, 2];
echo $dir; // Result = "/path"
1$dir = dirname[__DIR__, 2];
echo $dir; // Result = "/path"
2$dir = dirname[__DIR__, 2];
echo $dir; // Result = "/path"
3 Tôi hiện đang làm việc trên một tệp trong public_html/Directory/otherdirectory và muốn đưa tệp cấu hình vào public_html/Directory, vậy làm cách nào để đưa vào public_html/Directory/config. php trong public_html_Directory/otherdirectory/index. tập tin php? . / và. /Directory/ trong dòng bao gồm nhưng bị lỗi cả hai lần
Được chỉnh sửa vào ngày 11 tháng 4 năm 2020 bởi Nematode128- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
gizmola
Đăng ngày 11 tháng 4 năm 2020
gizmola
- quản trị viên
- 5. 6k
- 33
- Địa điểm. Los Angeles, CA Hoa Kỳ
- Chia sẻ
Đăng ngày 11 tháng 4 năm 2020
Dựa trên mô tả của bạn
include "../config.php";
Nếu điều đó không hoạt động, thì có điều gì đó không ổn ngoài vấn đề về đường dẫn. lỗi gì bạn nhận được?
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
maxxd
Đăng ngày 11 tháng 4 năm 2020
maxxd
- guru
- 1. 5k
- 32
- Địa điểm. bắc Carolina
- Chia sẻ
Đăng ngày 11 tháng 4 năm 2020
11 giờ trước, Nematode128 said
có lỗi cả hai lần
Nó có thể giúp đăng những lỗi đó ở đây
- Trích dẫn
Liên kết để bình luậnChia sẻ trên các trang web khác
requinix
Đăng ngày 11 tháng 4 năm 2020
requinix
- quản trị viên
- 14. 4k
- 297
- Địa điểm. Mỹ/Los_Angeles
- Chia sẻ
Đăng ngày 11 tháng 4 năm 2020
Đôi khi PHP thực hiện những điều không mong muốn khi bạn cung cấp cho nó các đường dẫn tương đối. Để hoàn toàn chắc chắn rằng bạn làm đúng, hãy tạo một đường dẫn tuyệt đối bằng cách sử dụng __DIR__ hoặc DOCUMENT_ROOT