<?php
define('ABSPATH', dirname(__FILE__));
Đặt mã sau vào tệp nằm trong thư mục gốc của ứng dụng và bao gồm trong mỗi lần tải trang.
Sau đó, bạn chỉ cần luôn làm $path = ABSPATH . '/path/to/file.php';
bất kể bản sao cục bộ của bạn có nằm trong thư mục con folder
hay không.
Nếu ứng dụng của bạn đã có tệp được bao gồm trong mỗi lần tải trang, bạn có thể chỉ cần thả mã ở trên vào tệp đó và nó sẽ hoạt động.
Chỉ cần lưu ý rằng bạn có thể phải bổ sung thêm dirname()
cuộc gọi tùy thuộc vào vị trí tệp đó. Thêm một cho mỗi thư mục bạn vượt qua từ gốc của webapp của bạn.
Ví dụ, nếu ứng dụng web của bạn nằm ở /webapp/
và bạn "toàn cầu bao gồm" tọa lạc tại /webapp/includes/framework/init.php
, sau đó các mã trên cần phải được sửa đổi như vậy:
define('ABSPATH', dirname(dirname(dirname(__FILE__))));
tức .: 2 thêm dirname()
cuộc gọi do hai thư mục bổ sung từ gốc webapp (includes/framework
)
Làm rõ
Đoạn mã trên có nghĩa là nằm trong một tệp và chỉ một tệp trong ứng dụng web của bạn. Tệp đó cần phải được bao gồm trong mỗi lần tải trang.
Nếu bạn đã có tệp được bao gồm trước bất kỳ quá trình xử lý nào (chẳng hạn như tệp cấu hình hoặc tệp khác), bạn có thể sao chép và dán mã đó vào tệp đó.
Số lượng cuộc gọi dirname()
tùy thuộc vào mức độ tệp bạn sao chép và dán mã tương ứng với thư mục gốc của ứng dụng web của bạn. Đối với các ví dụ trên, giả sử gốc của ứng dụng web của bạn được biểu thị bằng ~
.
Nếu bạn sao chép-dán mã của mình vào ~/abspath.php
, thì bạn cần một cuộc gọi dirname()
.
Nếu bạn sao chép-dán mã của mình vào ~/includes/abspath.php
, thì bạn cần hai cuộc gọi dirname()
.
Nếu bạn sao chép-dán mã của mình vào ~/includes/config/abspath.php
, thì bạn cần ba cuộc gọi dirname()
. Bây giờ chúng ta hãy nói đó là vị trí cuối cùng của nó.
Trong ~/index.php
, bạn thực hiện như sau:
<?php
require_once('includes/config/abspath.php');
và bạn có quyền truy cập vào ABSPATH
.
Trong ~/dir/someOtherPage.php
bạn làm như sau:
<?php
require_once('../includes/config/abspath.php');
và bạn có quyền truy cập vào ABSPATH
.
Đây là lý do tại sao tôi nói rằng nếu bạn đã có tệp được bao gồm trong mỗi lần tải trang, đơn giản hơn là chỉ cần thả mã ở trên vào đó. Chỉ cần đảm bảo bạn sửa đổi số lượng cuộc gọi dirname()
cho phù hợp. Một lần nữa, mã này có nghĩa là chỉ trong MỘT TẬP TIN.
Sau đó làm được những đường dẫn URL, một vấn đề đơn giản của nó loại bỏ các DOCUMENT_ROOT
TỪ ABSPATH
:
$docRoot = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
define('RELADDR', substr(ABSPATH, strlen($docRoot));
Tôi có cần phải mã hóa nó không ? Không có gì tôi có thể thêm, nói DOC_ROOT/myapp/index.php, mà có thể lập trình con số ra rằng đây là gốc ứng dụng? – scottm
Nếu bạn đang ở /myapp/index.php, 'dirname (__ FILE __)' (= "cho tôi thư mục hiện tại của tệp này") sẽ cung cấp cho bạn gốc ứng dụng cuối cùng.Bạn có thể lưu trữ nó trong một hằng số và sử dụng nó. –