Почему не корректно работает путь к файлу?

Пишу сайт и тестирую его на опенсервере. С путями проблем нет. Всё работает как надо.
Перенес на реальный сервер - возникла проблема с путями.
А именно по непонятным причинам скрипт обращается на уровень ниже. Разумеется там нет искомого файла.

Часть кода скрипта. Этот скрипт должен передать данные из формы в скрипт actions.php.
Скрипт лежит в папке admin/modules/modul1/. Я записываю путь относительно корневого каталога сайта в массив и далее использую этот путь.
<?php
//Путь к корневой директории для данного файла
$path_to_root_dir['add_modul1_form']='../../../';

//Подключение к БД (файл найден - это работает)
include ($path_to_root_dir['add_modul1_form'].'mysql.php');

//Все данные о пользователе  (файл найден - это работает)
include ($path_to_root_dir['add_modul1_form'].'common/all_about_user.php');

?>
<!--А вот тут проблема, не находит файл actions.php по указанному пути-->
<div class="add_modul1_window">
<form method="post" action="<?php echo $path_to_root_dir['add_modul1_form']; ?>actions.php?add_person">


На опенсервере. Скрипт лежит в папке
D:\OpenServer\domains\mysite.ru\admin\modules\modul1
Скрипт actions.php в папке D:\OpenServer\domains\mysite.ru\
Соответственно путь ../../../actions.php?add_person - правильный. Там и лежит скрипт.
Всё работает.

На реальном сервере. Скрипт лежит в папке
/var/www/test/admin/modules/modul1

Скрипт actions.php в папке /var/www/test/
Путь (просмотр html кода, при выводе страницы) ../../../actions.php?add_person - вроде верно
Нажимаем сабмит и
10.47.100.22/actions.php?add_person
Not Found The requested URL /actions.php was not found on this server.
Но ведь путь то ../../../actions.php?add_person, а не ../../../../actions.php?add_person.
Почему на реальном сервере был совершен переход не на 3 уровня вверх - как написано в коде, а на 4?
Почему не корректно работает путь к файлу?
  • Вопрос задан
  • 1079 просмотров
Пригласить эксперта
Ответы на вопрос 2
ArsenBespalov
@ArsenBespalov
Сам себе разработчик
У вас слишком много ошибок в подходе к разработке, таким методом много не сделаешь, а если и сделаешь, то лучше бы не делал, НО! В самом PHP если что-то инклудите, то делать лучше это с использованием переменной __DIR__, которая задает полный путь до текущего файла. Что касается форм на сайте, то там уже необходимо использовать относительные пути. Сначала попытайтесь решить первые 2-е проблемы, а потом уже пеняйте на такие проблемы. И в локальном варианте у вас все работало только из-то того, что сервер был локальный, а не удаленный.
Ответ написан
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы понимаете разницу между url и path?
<form method="post" action="../../../actions.php?add_person">
- это же адская хрень.
Вбейте в action путь от корня
action="/somedir/somedir/somedir/actions.php?add_person"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы