2013-04-05 30 views
7

Trước hết, Mac OS X không phải là hệ điều hành gốc của tôi, nhưng vì tôi cảm thấy thoải mái trong Ubuntu, nó là một sự chuyển đổi dễ dàng cho hầu hết các phần.trường hợp nhạy cảm trên Mac cho file_exists()?

Do đó là dựa trên Unix, tôi đã bị ấn tượng rằng hệ điều hành này phân biệt chữ hoa chữ thường, nhưng hàm file_exists() nói cách khác.

Trong file htdocs của tôi, tôi có 2 file:

test.php

MyFiLeWiThMiXeDCaSe.php

Trong test.php, tôi có mã này:

if(file_exists('myfilewithmixedcase.php')) { 
    echo 'exists'; 
} else { 
    echo 'doesnt exist'; 
} 

// ouputs: exists 

Bất cứ ai biết làm thế nào/tại sao điều này xảy ra? Điều này gây ra sự cố bởi vì khi chúng tôi triển khai mã như thế này với một hệ điều hành Linux, file_exists() đang trả về false.

BTW: Tôi đang sử dụng MAMP PRO làm máy chủ web cục bộ.

+3

Không phải là câu trả lời cho câu hỏi hiện tại của bạn, nhưng thật dễ dàng để tạo phân vùng nhỏ có hệ thống tệp phân biệt chữ hoa chữ thường và gắn kết vì hệ thống tệp mặc định trên OSX cho phép thay đổi kích thước. Đặt các dự án web của bạn trên phân vùng đó để ngăn không cho bạn tạo ra các lỗi/vấn đề liên quan đến trường hợp nhạy cảm. Chỉ cần xem ra với đường dẫn apache của bạn nếu bạn quyết định tạo một liên kết tượng trưng đến phân vùng mới của bạn. –

+0

Cảm ơn bạn đã tư vấn, có vẻ như nếu tôi tạo một phân vùng cho thư mục htdocs của tôi, nó sẽ giảm thiểu vấn đề này đáng kể. – Mark1inLA

+0

Bạn có thể tự viết cho mình một phiên bản nhạy cảm của file_exists(). Trước tiên, bạn có thể nhận danh sách tệp của thư mục mẹ và kiểm tra xem tệp hiện tại có nằm trong đó với so sánh phân biệt chữ hoa chữ thường hay không. –

Trả lời

3

Hệ thống tệp mặc định trên OS X không phân biệt chữ hoa chữ thường HFS +.

Bạn có thể định dạng âm lượng dưới dạng HFS + phân biệt chữ hoa chữ thường, và có (cách) bẩn để kích hoạt tính nhạy cảm của trường hợp cho các tập có sẵn. Tuy nhiên, chúng sẽ phá vỡ phần mềm hiện có, và bạn nên tránh trường hợp nhạy cảm về khối lượng gốc của bạn.

Nếu bạn cần hệ thống tệp phân biệt chữ hoa chữ thường vì lý do nào đó (ví dụ: xây dựng Android yêu cầu nó), bạn có thể tạo hình ảnh đĩa được định dạng phù hợp bằng cách sử dụng Tiện ích đĩa.

Lưu ý rằng nền tảng UNIX của OS X sẽ hoạt động tốt với hệ thống tệp phân biệt chữ hoa chữ thường.

+0

Cảm ơn bạn đã phản hồi chi tiết. Nếu tiện ích đĩa của tôi có định dạng: \t Mac OS Extended (Journaled), điều đó có nghĩa là nó hiện không phân biệt chữ hoa chữ thường? – Mark1inLA

+0

Có. Các hệ thống tập tin phân biệt chữ hoa chữ thường được ký hiệu đặc biệt trong Disk Utility. (Bạn có thể tạo một cách dễ dàng bằng cách tạo một hình ảnh đĩa mới.) – nneonneo

1

Theo mặc định, Mac OS X không phân biệt chữ hoa chữ thường, vì vậy "FILE" và "tệp" là hai tên cho cùng một tệp.

4

Mặc dù là một BSD phái sinh OS X KHÔNG phân biệt chữ hoa chữ thường. Hoặc thay vì hệ thống tập tin HFs và HFS + thì không, trừ khi bạn chọn tùy chọn trường hợp nhạy cảm khi định dạng đĩa của bạn. Điều này thường không được thực hiện bởi vì nhiều ứng dụng có vấn đề với điều này (Adobe, MS, vv) - hoặc ít nhất là họ đã làm lần cuối cùng tôi đã thử nó dưới Tiger.

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