Bởi vì "thư mục làm việc hiện tại" cho công việc cron sẽ là thư mục nơi mà file crontab của bạn tồn tại - vì vậy bất kỳ đường dẫn tương đối với được liên quan đến thư mục đó.
Cách đơn giản nhất để xử lý với chức năng dirname()
và hằng số PHP __FILE__
. Nếu không, bạn sẽ cần chỉnh sửa tệp bằng các đường dẫn tuyệt đối mới bất cứ khi nào bạn di chuyển tệp vào một thư mục khác hoặc máy chủ có cấu trúc tệp khác.
dirname(__FILE__)
__FILE__
là hằng số được định nghĩa bởi PHP là đường dẫn đầy đủ đến tệp mà tệp được gọi. Ngay cả khi tệp được bao gồm, __FILE__
sẽ LUÔN LUÔN tham chiếu đến đường dẫn đầy đủ của tệp - không phải tệp đang thực hiện bao gồm.
Vì vậy, dirname(__FILE__)
trả về đường dẫn thư mục đầy đủ đến thư mục chứa tệp - bất kể nó được bao gồm từ đâu và basename(__FILE__)
trả về tên tệp chính nó.
ví dụ: Giả sử "/home/user/public_html/index.php" bao gồm "/home/user/public_html/your_directory/your_php_file.php".
Nếu bạn gọi dirname(__FILE__)
trong "your_php_file.php", bạn sẽ nhận được "/ home/user/public_html/your_directory" được trả về mặc dù tập lệnh đang hoạt động nằm trong "/ home/user/public_html" (lưu ý sự vắng mặt của dấu gạch chéo).
Nếu bạn cần thư mục chứa tệp BAO GỒM: dirname($_SERVER['PHP_SELF'])
sẽ trả về "/ home/user/public_html" và giống như gọi dirname(__FILE__)
trong tệp "index.php" vì đường dẫn tương đối giống nhau.
dụ tập quán:
@include dirname(__FILE__) . '/your_include_directory/your_include_file.php';
@require dirname(__FILE__) . '/../your_include_directory/your_include_file.php';
Đây là một nguồn lực lớn cũng như: http://stackoverflow.com/questions/2857712/enable-proper-relative-path-in-cron – Webnet