# 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ỉ? :D

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 file** và **luô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\_file** và **is\_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.

