It's me ;-)

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.

Leave a Reply

Your email address will not be published.