2011-09-05 21 views
10

Theo như tôi biết, php getcwd() (và các chức năng tương tự như dirname(__FILE__)) có nghĩa vụ trả lại thư mục hiện tại của tệp đang được thực thi.php getcwd() giải quyết mục tiêu của liên kết tượng trưng thay vì thư mục hiện tại

Nếu thư mục hiện hành sẽ xảy ra là một liên kết tượng trưng đến thư mục khác, php (có lẽ kết hợp với apache) có nghĩa vụ phải trả lại con đường hiển thị tên liên kết tượng trưng như một thư mục khác bạn đang ở.

Ví dụ :

from /var/www, 
directory 'one' contains index.php 
symlink 'two' points at directory 'one' 

one/index.php: <?php echo getcwd(); ?> 

Truy cập http://localhost/two/index.php trong trình duyệt hiển thị /var/www/one.

Tôi mong chờ nó để hiển thị /var/www/two

Có ai biết nếu điều này là một php hoặc apache thiết lập tôi có thể thay đổi? Hoặc tôi không thể sử dụng các liên kết tượng trưng theo cách này?

+1

Bạn có tìm ra nó không? Tôi quan tâm đến trường hợp sử dụng tương tự này. – kalenjordan

+0

Apache có được cấu hình để theo dõi symLinks không? Giống như 'Tùy chọn FollowSymLinks' –

+0

Tôi không nghĩ rằng điều này có liên quan đến Apache. Đó là một tính năng "PHP". Nếu bạn nhập vào dòng lệnh này 'mkdir a; ln -s a b; php -r 'chdir ("b"); echo getcwd(); '', php sẽ cho bạn biết rằng bạn đang ở trong một thư mục có tên' a ', mặc dù bạn chdir() đã sửa thành' b '. – edam

Trả lời

8

OK đã tìm ra. Sử dụng $_SERVER['SCRIPT_FILENAME'] nếu qua trình duyệt. Trong dòng lệnh, bạn có thể nhận thư mục liên kết tượng trưng hiện tại bằng cách sử dụng exec("pwd")

Các vấn đề liên quan