2012-12-07 21 views
13

Sử dụng __DIR____FILE__ hằng số không hoạt động trong trường hợp được liên kết với nhau. Giải pháp cho việc này là gì?PHP __DIR__ hoặc __FILE__ symlinked

Ví dụ:

Tôi có một file:

/home/me/modules/myfile.php 

Nó được symlinked tới:

/var/www/project/app/myfile.php 

từ trong /home/me/modules/myfile.php tôi cần phải bao gồm một tập tin đó nằm ở /var/www/project

EDIT

Để đề xuất sử dụng realpath() - rất tiếc, tính năng này không hoạt động.

var_dump(__DIR__); 
var_dump(realpath(__DIR__)); 

cả hai trở lại giống hệt nhau filepath

+3

[ 'realpath()'] (http://us3.php.net/manual/en/function.realpath.php) –

+0

lẻ , realpath() trả về false và tập tin xác định tồn tại –

+0

'realpath()' của _what_ trả về false? 'realpath (__ DIR __)' –

Trả lời

0

Bạn có thể sử dụng realpath() chức năng để mở rộng liên kết tượng trưng. Đề nghị của tôi, tuy nhiên, sẽ không sử dụng các liên kết tượng trưng như thế này. (Thay vào đó, hãy thêm /var/www/project/app hoặc thư mục chính thích hợp vào đường dẫn PHP của bạn.)

+0

Im sợ realpath doesnt cho tôi vị trí symlinked hoặc –

+0

['readlink()'] (http://php.net/readlink) có lẽ? Nếu không, tôi đang thua lỗ. – duskwuff

+1

@duskwuff xem http://stackoverflow.com/questions/13771021/php-dir-or-file-symlinked#comment18933995_13771021 OP muốn hiệu ứng ngược lại với đường dẫn thực và đường dẫn đọc –

2

Bạn đã thử những điều sau đây chưa?

dirname($_SERVER['SCRIPT_FILENAME'])

Trong trường hợp của bạn này sẽ trở lại: /var/www/project/app

+0

Đây phải là câu trả lời được chấp nhận –

+0

Điều này chỉ hoạt động giả sử PHP đang chạy thông qua một máy chủ web như Apache, không phải trên dòng lệnh. – Greg

+0

Không đúng sự thật. Điều này làm việc bất kể bạn đang sử dụng một máy chủ Web của Console. Nó vẫn đang trải qua một Server/SAPI - về một giao diện điều khiển, nó sẽ đi qua fpm-cgi thay vì apache-cgi, ví dụ. Tôi đã thử nghiệm điều này và '$ _SERVER ['SCRIPT_FILENAME']' chắc chắn hoạt động. –

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