2011-12-08 38 views
5

Khi tôi cố gắng bao gồm đường dẫn tệp dài mà PHP không tải được. Một đường dẫn ngắn bao gồm hoạt động tốt.PHP Bao gồm: Đường dẫn dài Số phát hành

Ví dụ, sau đây sẽ thất bại:

../../contents/2010-St-Louis-Rams-Tickets-Season-Package-Includes-Tickets-For-All-Regular-Season-Home-Games/inc/title.inc 

Có ai có bất kỳ ý tưởng nơi mà vấn đề có thể được?

+1

Đường dẫn sai? – alex

+0

Vui lòng đăng cấu hình HĐH và thông báo lỗi PHP chính xác. Nó có thể là một tập tin thực sự không tìm thấy lỗi hoặc có lẽ chỉ là một vấn đề quyền. Có khả năng hệ điều hành của bạn đang hạn chế độ dài tên tệp. –

+0

Mã là chính xác vì cùng một mã đang hoạt động trên máy chủ Linux với appachi nhưng chúng tôi đã di chuyển trang web từ máy chủ Linux sang máy chủ Windows 2008 với IIS 7. Nó không hiển thị bất kỳ lỗi hoặc cảnh báo nào vừa bỏ qua nó. – Imran2220

Trả lời

1

Vui lòng kiểm tra xem đường dẫn của bạn (bao gồm tên ổ đĩa vv) có vượt quá 260 ký tự hay không. Vì đó là chiều dài thư mục tối đa cho Windows. Click here to see the reference.

Tham chiếu cũng cho biết rằng có khả năng tạo tên đường dẫn dài hơn bằng cách thêm tên đường dẫn với "\? \". Điều đó sẽ mở rộng chiều dài đường dẫn tối đa đến 32767 ký tự. Nhưng tôi không có ý tưởng nếu điều này có thể được sử dụng trong PHP.

+2

Tôi thấy một +1 trên câu trả lời này, vì vậy tôi đã tự hỏi nếu có ai thành công bằng cách sử dụng \\? \ Cú pháp trong php? Cá nhân tôi không thể làm cho nó hoạt động được, nhưng có lẽ tôi đang thiếu cái gì đó? –

+0

Đúng, đang chờ xử lý '\\? \' Không hoạt động. [This] (http://www.serverphorums.com/read.php?7,627200) trông giống như một lời giải thích, mặc dù một dài. – XedinUnknown

+0

Bạn chính xác. Do lỗi trong PHP, tên đường dẫn dài sẽ không hoạt động. Điều này đã được [cố định với PHP 7.1] (https://github.com/php/php-src/blob/php-7.1.0RC4/NEWS#L763). – Carsten

0

tôi đã cùng một vấn đề với một project symfony 1.x khi viết bài kiểm tra mà nhìn một cái gì đó như thế này:

require_once __DIR__ . '/../../../../bootstrap/unit.php'; 
require_once __DIR__ . '/../../../../../../../MY/LONG/PATH.php' 

Điều ở đây là những /../../ .. mất rất nhiều không gian ký tự. Trong trường hợp của tôi nếu những người không được sử dụng nó sẽ làm việc.

Trong symfony bạn có thể nhận được thư mục gốc của bạn dự án bằng cách gọi sfConfig :: get ('sf_root_dir'), và do đó tôi có thể thay đổi mã của tôi theo cách sau:

require_once __DIR__ . '/../../../../bootstrap/unit.php'; 
require_once sfConfig::get('sf_root_dir') . '/MY/LONG/PATH.php' 

này hoạt động (trong tôi trường hợp) hoàn hảo.

Mặc dù ở đây tôi sử dụng thư mục gốc được cung cấp bởi khung công tác symfony, trong dự án của bạn, nó chỉ là vấn đề xác định thư mục gốc của dự án ở đâu đó và giữ cho nó có thể truy cập được.

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