is_dir vs file_exists

Hôm nay ở cty anh Linh đã hỏi có ai biết hàm kiểm tra thư mục đã tồn tại hay chưa không? (anh ấy đang làm cái liên quan đến theme thì phải :-?). Theo phản xạ tôi bật ngay ra hàm is_dir, ngay lúc đấy chỉ biết hàm is_dir là kiểm tra xem tên truyền vào có phải là thư mục hay không, đúng như tên gọi của hàm: is_dir. Mà dù sao thì phải là thư mục thì mới tồn tại được chứ nhỉ? 😀

Còn thằng ku Trường nó bảo dùng hàm file_exists. Lúc đó tôi cũng chẳng biết là file_exists có thể check exists cả file lẫn folder :”> Tuy nhiên cái cần nhấn mạnh ở đây là: tôi đã có lần từng dùng hàm file_exists để kiểm tra sự tồn tại của 1 fileluôn nhận được kết quả FALSE mặc dù file nó nằm chình ình ra đấy nên tôi khá e dè trong việc sử dụng hàm này. Khi phải check sự tồn tại của file hay thư mục thì tôi hay dùng is_fileis_dir.

Lúc đó cũng chí chóe 1 lúc nhưng lý do chính để bảo nên dùng is_dir thì tôi chẳng thế nhớ được. Đang bận làm nên không có thời gian search (nhớ không nhầm thì trong PHPVietnam cũng có nhắc đến => nó đây: http://groups.google.com/group/phpvietnam/browse_thread/thread/88631b0e7cec117/199d1957c9df6e73?lnk=gst&q=file_exists#199d1957c9df6e73)

Bây giờ test thử xem nào:

exec('chown mrkhanh test_dir');

if( file_exists('test_dir') )
{
    echo 'test_dir is existed.';
}
else 
{
    echo 'test_dir does not exist.';
}

Mới chạy thử trên host (bluehost) thì thấy nó chỉ hiện trang trắng, error 500 :”>
Để hôm nào test trên thằng Ubuntu vậy :-s

Nhưng mà PHP manual nói rồi, chẳng lẽ sai :-”

This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir.

Còn đây là giải thích của anh pcdinh (Phạm Công Định):

file template được up lên với sở hữu của root trong khi apache lại chạy dưới 1 user khác.

Posted in PHP
It's me ;-)

Nam Khanh Do

Khanh is a full stack web developer with over 10 years of experience developing for the web. You can reach him on Twitter, like him on Facebook and connect with him on LinkedIn.

Leave a Reply

Your email address will not be published. Required fields are marked *