Этот вопрос задавался много раз, но ни один из найденных ответов не помог мне.
Я пытаюсь заставить php file_exists () работать.Единственный сценарий, когда он работает, - это когда php-файл находится в том же каталоге, что и файл, для которого используется file_exist () и только с использованием имени файла (т.е. исключая путь).Но это не последующее поведение, см. Ниже.
Информация о сомах:
- safe_mode = off
- без символических ссылок для каталога 28
- без пробелов в имени файла
- Все каталоги в / var / www / html / smic / upload / 28 / имеют разрешение apache: apache 777.
- Использование php 5.3
PHP:
echo getcwd()
clearstatcache();
$file = 'file:///var/www/html/smic/upload/28/ul.txt';
//Also tried like this
//$file = '/var/www/html/smic/upload/28/ul.txt';
if(file_exists($file)){
echo $file." exists";
}
getcwd () prints / var / www / html / smic / modules / core / ticket
Разрешение php-скрипта и проверяемого файла: apache: apache 777.
Некоторые сведения о структуре каталогов:
[root@localhost 28]# pwd
/var/www/html/smic/upload/28
[root@localhost 28]# ls -l ul.txt
-rw-r--r--. 1 apache apache 2 Feb 9 10:50 ul.txt
[root@localhost 28]# chmod 777 ul.txt
[root@localhost 28]# ls -l ul.txt
-rwxrwxrwx. 1 apache apache 2 Feb 9 10:50 ul.txt
Поведение не изменилосьпосле изменения разрешения файла.В каталоге / 28 есть drwxr-xr-x.для пользователя apache и группы apache
Для теста я также переместил настоящий php-скрипт в / 28, предоставив ему apache: apache 777 rigths.Изменил $ file на "ul.txt" (т.е. $ file = 'ul.txt';).Это работает, файл ul.txt найден.
getcwd () печатает затем / var / www / html / smic / upload / 28
В качестве другого теста я попытался найти другой файл, исключая путь в каталоге "ticket", файлне был признан
Я бьюсь головой ...
Любой совет приветствуется.