Làm cách nào để lấy URL thư mục hiện tại trong PHP?

Có một số cách để lấy thư mục làm việc hiện tại trong PHP tùy thuộc vào những gì bạn đang làm việc. Nói chung, bạn muốn sử dụng các phương pháp này để lập trình tìm ra tập lệnh đang chạy nằm trong thư mục nào

Thư mục làm việc hiện tại Sử dụng hàm PHP getcwd()

Cách thay đổi thư mục trong CMD. đồng

Vui lòng bật JavaScript

Cách thay đổi thư mục trong CMD. Dấu nhắc lệnh

Hàm PHP này trả về thư mục làm việc hiện tại nếu thành công và sai nếu thất bại. Hàm được gọi không có tham số

Trên một số biến thể Unix, getcwd() sẽ trả về false nếu bất kỳ một trong các thư mục mẹ không được đặt chế độ tìm kiếm hoặc có thể đọc được, ngay cả khi thư mục hiện tại có.

Ví dụ

echo getcwd();

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như

/path/to/folder

Thư mục làm việc Sử dụng hàm dirname() PHP

hàm dirname trả về đường dẫn của thư mục mẹ hoặc tùy thuộc vào các tham số mà bạn có thể xác định đường dẫn mẹ mà bạn muốn trả về bao xa

Để lấy thư mục hiện tại bằng dirname(), bạn cần thêm hằng số FILE được xác định trước PHP hoặc PHP_SELF

Ví dụ

require_once dirname(__FILE__) . '/folder/script.php';
echo dirname($_SERVER[PHP_SELF]);

Một trong những ví dụ trên sẽ xuất ra một cái gì đó tương tự như

/path/to/folder

Sử dụng hàm cơ sở () PHP

Hàm tên cơ sở trả về thành phần tên theo sau của đường dẫn

Ví dụ

echo "1) ".basename("/path/to/folder", ".d").PHP_EOL;
echo "2) ".basename("/path/to").PHP_EOL;
echo "3) ".basename("/path/").PHP_EOL;

Các ví dụ trên sẽ xuất ra một cái gì đó tương tự như

1) folder
2) to
3) path

Phần kết luận

Bây giờ bạn đã học được ba cách để lấy thư mục làm việc hiện tại trong PHP

Tìm thấy bài viết này thú vị?

Hàm getcwd() trong PHP là một hàm sẵn có được sử dụng để trả về thư mục làm việc hiện tại. Hàm này không chấp nhận bất kỳ tham số nào và trả về thư mục làm việc hiện tại khi gọi hàm thành công hoặc FALSE nếu không thành công

cú pháp

getcwd()

Thông số. Hàm này không chấp nhận bất kỳ tham số nào

Giá trị trả về. Nó trả về thư mục làm việc hiện tại khi gọi hàm thành công hoặc FALSE khi thất bại

❮ Tham khảo thư mục PHP

Ví dụ

Lấy thư mục làm việc hiện tại

Kết quả



Định nghĩa và cách sử dụng

Hàm getcwd() trả về thư mục làm việc hiện tại


cú pháp



chi tiết kỹ thuật

Giá trị trả về. Thư mục làm việc hiện tại khi thành công, FALSE khi thất bại. Phiên bản PHP. 4. 0+
❮ Tham khảo thư mục PHP

Trang web của tôi đã ngừng hoạt động trong vài giờ hôm nay khi công ty lưu trữ của tôi bất ngờ thay đổi thư mục http gốc của Apache thành thư mục mới có chứa liên kết tượng trưng. Thay đổi này đã phá vỡ một số tập lệnh PHP của tôi vì __DIR__ đột nhiên có một đường dẫn cơ sở khác với DOCUMENT_ROOT và phương pháp str_replace mà tôi đang sử dụng để xác định URL thư mục cho rằng chúng sẽ luôn giống nhau. Nếu bạn Google "cách lấy URL của thư mục hiện tại bằng PHP", có thể bạn sẽ tìm thấy các đề xuất sử dụng mã như thế này

// WARNING: DON'T USE THIS CODE!
$folderUrl = 'http://'.$_SERVER['HTTP_HOST'].str_replace($_SERVER['DOCUMENT_ROOT'], '', __DIR__); 

Hãy xem những biến này giải quyết vấn đề gì trên trang web của tôi

VariableValue$_SERVER['HTTP_HOST']swharden.com__DIR__/home/customer/www/swharden.com/public_html/tmp/test
// This script displays the URL of the current folder
$realDocRoot = realpath($_SERVER['DOCUMENT_ROOT']);
$realDirPath = realpath(__DIR__);
$suffix = str_replace($realDocRoot, '', $realDirPath);
$prefix = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$folderUrl = $prefix . $_SERVER['HTTP_HOST'] . $suffix;
echo $folderUrl;
0/home/customer/www/swharden.com/public_html/tmp/test
// This script displays the URL of the current folder
$realDocRoot = realpath($_SERVER['DOCUMENT_ROOT']);
$realDirPath = realpath(__DIR__);
$suffix = str_replace($realDocRoot, '', $realDirPath);
$prefix = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$folderUrl = $prefix . $_SERVER['HTTP_HOST'] . $suffix;
echo $folderUrl;
2
// This script displays the URL of the current folder
$realDocRoot = realpath($_SERVER['DOCUMENT_ROOT']);
$realDirPath = realpath(__DIR__);
$suffix = str_replace($realDocRoot, '', $realDirPath);
$prefix = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$folderUrl = $prefix . $_SERVER['HTTP_HOST'] . $suffix;
echo $folderUrl;
3
// This script displays the URL of the current folder
$realDocRoot = realpath($_SERVER['DOCUMENT_ROOT']);
$realDirPath = realpath(__DIR__);
$suffix = str_replace($realDocRoot, '', $realDirPath);
$prefix = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$folderUrl = $prefix . $_SERVER['HTTP_HOST'] . $suffix;
echo $folderUrl;
4
// This script displays the URL of the current folder
$realDocRoot = realpath($_SERVER['DOCUMENT_ROOT']);
$realDirPath = realpath(__DIR__);
$suffix = str_replace($realDocRoot, '', $realDirPath);
$prefix = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$folderUrl = $prefix . $_SERVER['HTTP_HOST'] . $suffix;
echo $folderUrl;
5

So sánh __DIR__ với DOCUMENT_ROOT, lưu ý rằng nếu không có độ phân giải đường dẫn thực thì các đường dẫn cơ sở sẽ khác nhau. Điều này khiến phương thức thay thế chuỗi đột ngột bị lỗi trên trang web của tôi, khiến một số trang web ngừng hoạt động trong vài giờ. Tôi sẽ chấp nhận nó như một sai lầm của tân binh và tôi đang chia sẻ những gì tôi học được ở đây phòng trường hợp nó giúp ích cho những người khác trong tương lai

Giải pháp là đảm bảo tất cả các đường dẫn được chuyển đổi thành đường dẫn tuyệt đối được chuẩn hóa bằng cách sử dụng

// This script displays the URL of the current folder
$realDocRoot = realpath($_SERVER['DOCUMENT_ROOT']);
$realDirPath = realpath(__DIR__);
$suffix = str_replace($realDocRoot, '', $realDirPath);
$prefix = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$folderUrl = $prefix . $_SERVER['HTTP_HOST'] . $suffix;
echo $folderUrl;
8. Điều này sẽ bảo vệ bạn khỏi các liên kết tượng trưng không mong muốn. Lưu ý mã này cũng thêm tiền tố HTTP hoặc HTTPS thích hợp