Cảnh báo của Manual
Warning
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.
Đoạn mã test sau đây in ra yes khi chạy từ browser (và apache
webserver chạy dưới account không phải là root), và file a0.php thuộc
sở hữu của root.
if(file_exists("a0.php") ) echo "yes";
else echo "no";
vấn đề ở chỗ khác chăng ?
On Nov 7, 11:15 pm, Nguyễn Tiến Sĩ <mrsinguye...@gmail.com> wrote:
> Cái này em gặp khi làm một dự án ở công ty.
> Em dùng hàm include file đó nhưng vẫn ko mở được vì apache không có
> quyền trên file đó.
Theo tôi chỉ khi file cần include không có thuộc tính read cho others
(including apache) thì mới không include được. Ví dụ:
main.php
<?php
if(file_exists("/var/tmp/test.php") ) echo "yes";
else echo "no";
include ("/var/tmp/test.php");
?>
nếu file test.php có thuộc tính là rw-r----- thi không include được
(file_exists thì vẫn trả về true và giá trị in ra là yes)
Còn nếu test.php có thuộc tính là rw-r--r-- thì include OK
On Nov 8, 1:45 am, pcdinh <pcd...@gmail.com> wrote:
> a0.php thuộc sở hữu của root và chmod của nó là gì?
của nó là là rw-r--r--
Nhưng dù thuộc tính nào thì file_exists vẫn trả về TRUE. Như vậy không
kết luận được là kết quả trả về của file_exists phụ thuộc vào sở hữu
hoặc thuộc tính của nó.
Thực tế thì 1 số các class trong web application của tôi đều thuộc sở
hữu root (tránh các linux user khác vô tình thay đổi file) và nằm
ngoài public html folder. file_exists vẫn được dùng để check sự tồn
tại của các class files này.
As root,
mkdir /d
touch /d/f
chmod -R 700 /d
Tried with Apache and file_exists('/d/f') returned FALSE.
As the user that Apache runs under,
cd /d. Permission denied.
So, I think, file_exists() returns FALSE if the file is not accessible
to the user that Apache runs under.
You're right with your test, but I'm not sure about what you've said
"ownership and file permission itself have no impact on file_exists".
Ownership and permissions of the path to the file should be taken into
account too.
I think the function name -- file_exists -- is confusing us. When it
doesn't know for sure that a file exists it comes to the conclusion
that the file doesn't exist.
Maybe file_readable is a good replacement. What is an existing file
that isn't readable for?
rung.