46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
|||||||||||
1 | |||||||||||
Парадокс определения существования файла средствами PHP17.09.2015, 15:49. Показов 1927. Ответов 22
Добрый день!
Столкнулся с парадоксом. (CentOS & PHP) В корне сайта (public_root), PHP успешно видит файл
(разумеется, в обоих случаях, что в терминале, что в PHP - относительный путь берется относительно корня, т.е. public_root) Знаю, что в данной области, парадоксов быть не должно При этом, этот же самый файл, PHP благополучно увидит, если он будет просто на уровне выше корня file_exists ('../file.php') Подскажите пожалуйста в чем может быть проблема?
0
|
17.09.2015, 15:49 | |
Ответы с готовыми решениями:
22
Создание bat файла средствами php Парсинг JSON файла средствами PHP Поиск файла средствами php на сайте Проверка существования email средствами java |
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
||||||
17.09.2015, 17:02 | 3 | |||||
warma2d, если у вас несколько скриптов php, некоторые из которых включены посредством require() или ее разновидностей в другие, то путь во всех включенных скриптах берется от папки самого первого скрипта, куда происходило включение. Соответственно, и '../' во включенном скрипте будет работать не от его папки, а от папки самого первого скрипта.
Для верности проверьте путь, в котором ищете, командой
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
|
17.09.2015, 17:11 [ТС] | 4 |
Вернула, false.
Кстати, что относительный путь, что абсолютный путь - результат выводит один: Permission denied и errorno 13. Только вот, где описан нумерованный список этих ошибок ? пока нигде не нашел.
0
|
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
|
|
17.09.2015, 17:47 | 5 |
Смотри права на саму папку subdir
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|
17.09.2015, 19:45 | 6 |
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
|
18.09.2015, 02:20 [ТС] | 8 |
Благодарю, за ответы.
мои предположения тоже пришли к аналогичному выводу. Теперь вопрос сводится к тому, что как проще всего объяснить apache, чтобы он разрешил скриптам подняться выше корня сайта ? Первый раз прочитал длинный конфиг Apache от и до , пытался вставлять разные условия (и в начало конфига, и в конец), но пока не получилось убрать 13 ошибку (подняться выше корня) Подскажите пожалуйста, что следует прописать в Apache конфиг ?
0
|
Заблокирован
|
|
18.09.2015, 07:33 | 9 |
простейший вариант найти в extra/httpd-vhosts.conf или в самом httpd.conf если не настроены виртуальные хосты, что-то типа
Код
<Directory c:/web/mysupersite.ru> php_admin_value open_basedir "c:/web/mysupersite.ru" </Directory> или вообще удалить этот параметр. И быть готовым что ваши скрипты теперь в состоянии принести много вреда .
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
|||||||||||
18.09.2015, 13:50 [ТС] | 10 | ||||||||||
С помощью этого мне не удалось дать доступ
Проблема в том, что и раньше можно было подняться выше корня (хотя бы на 1 уровень), но затем опуститься в некую директорию subdir не получается. (т.е. она получается соседняя для public_html) Привожу реальную структуру файлов:
В результате, скрипт говорит, что в public_html файл test.php существует. Файл test.php, который выше корня тоже существует, а тот же самый файл, который в subdir не существует. Для любого файла в ../subdir/test.php PHP пишет, что доступ запрещен. Предполагаю, дело не правах доступа системы Linux. Не в правах PHP, а именно в правах Apache. В главный конфиг Apache, httpd.conf, (вставлял и в начало конфига, и в конец конфига) разные конструкции. Например,
Подскажите пожалуйста, что следует прописать и куда в Apache, чтобы можно было скриптам наверняка гулять где угодно (хотя бы попасть в subdir)
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
|||||||||||
18.09.2015, 14:37 [ТС] | 12 | ||||||||||
Здесь стандартный конфиг Апача, и vhosts нигде не подключаются. К тому же ни один файл, содержащий vhosts в системе не найден.
С командой поиска, может быть, поторопился, но всё равно никаких файлов с vhosts в системе нет.
0
|
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
|
||||||
18.09.2015, 17:59 | 13 | |||||
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
18.09.2015, 19:49 | 14 |
warma2d, ну коль уж realpath возвращает false (что может быть как раз когда нет прав на директорию), и так же возникает ошибка доступа при абсолютном пути, то видимо, действительно проблема в правах доступа.
Попробуйте посмотреть здесь http://old.webasyst.ru/support... -tips.html
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
||||||
18.09.2015, 19:54 [ТС] | 15 | |||||
Пожалуйста, для полной картины, даже public привожу. (subdir это application, site это site.net.local, а корень сайта это public)
Сам файл, который нужно задедектить это add.php В корне сайта (public) он спокойно дедектится. На 1 уровень вверх, т.е. в (site.net.local) тоже файл существует, а вот в директории (application), PHP говорит, что этого файла нет. (ради эксперимента менял даже собственника и группу файла, но предполагаю, что при 777 это не сильно влияет)
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
||||||
18.09.2015, 20:09 | 16 | |||||
Еще можно посмотреть, что выдаст
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
||||||
18.09.2015, 20:13 [ТС] | 17 | |||||
более того, сам PHP говорит (echo getcwd()), что корень сайта это /var/www/html/site.net.local/public
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
18.09.2015, 20:25 | 18 |
warma2d, получается, скрипт не может прочитать, что в этой папке ('application'), так как папка ему недоступна для чтения.
Добавлено через 7 минут Поэтому функция file_exists и выдает false
0
|
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
|
|
18.09.2015, 20:27 [ТС] | 19 |
это понятно, главное бы понять, почему она недоступна... Может быть все-таки сам Apache как-то блочит ? (Конфиг апача был абсолютно стандартный, т.е. никаких блокировок не делал. Пытался сделать обратное, но всё без изменений)
Может быть, в главном конфигурационном файле Apache, можно как-то сделать явный "777" доступ ? ) В чем может быть проблема пока не знаю...
0
|
33 / 9 / 11
Регистрация: 20.05.2015
Сообщений: 121
|
|
18.09.2015, 20:28 | 20 |
А попробуйте не от рута запустить ls -la, что выдаст? Хотя, наверно дребедень сморозил. То же самое и получится) Вообще, странно, что у файлов add и группа, и владелец root
0
|
18.09.2015, 20:28 | |
18.09.2015, 20:28 | |
Помогаю со студенческими работами здесь
20
Как узнать кодировку файла средствами php? Алгоритм скачивания множества файла средствами PHP Формирование файла tsv с базы Mysql средствами php Есть ли в php функция определения размера удалленного файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |