Php file_exists trả về false ngay cả khi tệp tồn tại
Đăng vào ngày 16 tháng 3 năm 2015 lúc 4. 00 giờ chiều Show
Nếu hàm PHP file_exists trả về false ngay cả khi tệp tồn tại 1) Đảm bảo tệp và máy chủ web có cùng chủ sở hữu (ví dụ:. www-data) Nhận thông tin cập nhật qua emailVui lòng kích hoạt JavaScript để xem các bình luận được cung cấp bởi DisqusBài viết khác
bài viết cập nhật
Nhiều lần bạn sẽ cần di chuyển các tệp xung quanh hoặc lưu trữ một số dữ liệu bên trong chúng trong PHP. Trong cả hai trường hợp, việc biết trước tệp có tồn tại hay không có thể giúp chúng tôi tránh một số hành vi không mong muốn PHP đi kèm với nhiều chức năng để xử lý các loại truy vấn khác nhau liên quan đến tệp. Trong hướng dẫn này, tôi sẽ cung cấp cho bạn tổng quan ngắn gọn về tất cả các chức năng này để bạn có thể chọn một chức năng hoạt động tốt nhất trong trường hợp của mình Tầm quan trọng của việc kiểm tra xem tệp có tồn tại khôngCó rất nhiều tình huống trong đó việc kiểm tra xem tệp có tồn tại hay không trước khi thực hiện bất kỳ điều gì khác có thể quan trọng. Giả sử trang web của bạn cho phép người dùng tải lên các tệp hình ảnh trên máy chủ của bạn để họ có thể truy cập sau này. Công bằng mà nói, luôn có khả năng xảy ra xung đột tên tệp nếu nhiều người dùng đang sử dụng dịch vụ của bạn để tải nhiều tệp lên thường xuyên Trong những trường hợp như vậy, điều quan trọng là phải kiểm tra xem đã có tệp khác ở vị trí bạn muốn lưu tệp được tải lên gần đây của người dùng chưa. Sau đó, bạn sẽ có tùy chọn thực hiện một số bước như đổi tên tệp thành tên khác hoặc cho người dùng biết rằng tệp tải lên của họ sẽ ghi đè lên tệp hiện có Hãy xem xét một tình huống khác mà bạn phải thêm dữ liệu vào một tệp trong PHP. Nếu tệp bạn đã tạo để ghi tất cả dữ liệu của mình bị xóa vì lý do nào đó, các chức năng như The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.0 sẽ chỉ tạo một tệp mới với tên được chỉ định và lưu trữ dữ liệu của bạn bên trong tệp mới tạo. Điều này có thể được mong muốn trong một số trường hợp, nhưng không phải lúc nào cũng vậy. Vì vậy, thật hợp lý khi kiểm tra xem tệp có tồn tại trước hay không nếu bạn đã mong đợi nó ở đó trước khi bạn bắt đầu ghi dữ liệu của mình Kiểm tra xem tệp có tồn tại trong PHP khôngCó ba chức năng khác nhau mà bạn có thể sử dụng để kiểm tra xem một tệp có tồn tại trong PHP hay không Hàm đầu tiên là The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.1. Hàm này chấp nhận một tham số duy nhất là đường dẫn chứa tệp của bạn. Hãy nhớ rằng nó sẽ trả về true cho cả tệp và thư mục hiện có. Điều này có thể hoặc có thể không đủ cho nhu cầu của bạn Bạn có thể cân nhắc sử dụng hàm The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 nếu muốn chắc chắn rằng đường dẫn bạn đã chỉ định trỏ tới tệp chứ không phải thư mục. Tương tự, bạn có thể sử dụng hàm The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3 để kiểm tra xem đường dẫn bạn đã chỉ định có tồn tại không và liệu nó có trỏ đến một thư mục không đầu ra The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory. Trong ví dụ trên, tôi cố ý đặt tên cho một trong các thư mục là ô vuông. zip để cho thấy rằng điều quan trọng là bạn phải tự kiểm tra thay vì cho rằng tên tệp được cung cấp thực sự là tên tệp hoặc thư mục Điều quan trọng cần nhớ là cả The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 và The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3 sẽ trả về The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 ngay cả đối với các đường dẫn thực sự tồn tại khi thư mục mẹ không có quyền phù hợp Kiểm tra xem tệp có tồn tại và có thể đọc hoặc ghi được khôngCó thể sử dụng thêm hai hàm có tên là The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3 và The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.4 để lấy một số thông tin bổ sung về một tệp, bên cạnh việc kiểm tra xem nó có tồn tại không Đúng như tên gọi, hàm The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3 sẽ kiểm tra hai thứ. thứ nhất, tệp hoặc thư mục thực sự tồn tại và thứ hai, tệp có thể đọc được. Tương tự, hàm The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.4 cũng kiểm tra hai điều, đó là tệp hoặc thư mục tồn tại và có thể ghi được đầu ra ________số 8 Tôi khuyên bạn nên cẩn thận khi diễn giải giá trị trả về của hai hàm này. Ví dụ: bản năng đầu tiên của chúng tôi khi The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3 trả về false là nghĩ rằng tệp chúng tôi đã truy vấn không thể đọc được. Tuy nhiên hàm cũng trả về false nếu file không tồn tại. Điều quan trọng là luôn ghi nhớ khía cạnh này của các chức năng này Coi chừng kết quả được lưu trong bộ nhớ cacheGiá trị trả về mà bạn nhận được từ lệnh gọi đến tất cả năm hàm này—cụ thể là, The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.1, The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2, The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3, The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.3 và 2—được lưu trong bộ nhớ cache. Điều này có nghĩa là các lệnh gọi hàm lặp lại, chẳng hạn như The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2, có thể cho bạn thấy kết quả cũ PHP lưu trữ kết quả của các chức năng này để cải thiện hiệu suất. Điều này đảm bảo rằng nhiều cuộc gọi để truy vấn cùng một tệp sẽ hoạt động nhanh hơn. Tuy nhiên, giá trị trả về của chúng sẽ giữ nguyên ngay cả khi tệp thay đổi trong quá trình thực thi tập lệnh Kết quả chỉ được lưu vào bộ đệm cho các tệp đã tồn tại. Điều này có nghĩa là việc gọi một hàm The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 sẽ tiếp tục trả về The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 cho các tệp không tồn tại nhưng sẽ bắt đầu trả về 6 ngay khi tệp được tạo. Mặt khác, hàm sẽ tiếp tục trả về 6 cho tệp đã tồn tại trong lần gọi đầu tiên, ngay cả sau khi tệp đã bị xóa The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.5 Nếu bạn chạy đoạn mã trên cho một tệp thực sự tồn tại và sau đó xóa nó theo cách thủ công trong khi tập lệnh chờ, lệnh gọi The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 vẫn sẽ trả về 6. Tuy nhiên, bạn có thể nhận được kết quả chính xác bằng cách gọi We can read "squares.txt". We can also modify the contents of "squares.txt".0 trước khi truy vấn lại sự tồn tại của tệp đầu ra The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.8 Một điều khác cần nhớ là lệnh gọi tới We can read "squares.txt". We can also modify the contents of "squares.txt".1 sẽ tự động xóa bộ nhớ cache, do đó, bạn sẽ nhận được kết quả mới cho các lệnh gọi tới hàm như The file "squares.txt" exists. "squares.txt" is indeed a file. "squares.zip" turned out to be a directory.2 sau này Suy nghĩ cuối cùngChúng tôi bắt đầu hướng dẫn này bằng cách tìm hiểu tầm quan trọng của việc kiểm tra sự tồn tại của tệp trong PHP. Sau đó, chúng ta đã tìm hiểu về các chức năng khác nhau mà bạn có thể sử dụng để kiểm tra xem một tệp có tồn tại trong PHP hay không. Chúng tôi cũng đã tìm hiểu về những ưu điểm và nhược điểm mà một số chức năng này có thể có. Như tôi đã đề cập ở phần cuối, PHP sẽ lưu trữ kết quả của một số lệnh gọi hàm này để cải thiện hiệu suất. Do đó, hãy đảm bảo rằng bạn xóa bộ nhớ cache trước khi thực hiện điều gì đó quan trọng với các tệp đó Điều nào sau đây trả về true nếu tệp tại đường dẫn đã chỉ định tồn tại hoặc sai nếu ngược lại?Tệp. tồn tại (). Trả về true nếu tệp tồn tại; .
Thư mục có tồn tại PHP không?Hàm is_dir() trong PHP
. Ghi chú. Kết quả của chức năng này được lưu trữ. Sử dụng clearstatcache() để xóa cache. The is_dir() function checks whether the specified filename is a directory. Note: The result of this function is cached. Use clearstatcache() to clear the cache. |