За последние 24 часа нас посетили 22730 программистов и 1258 роботов. Сейчас ищет 741 программист ...

\ / обратный слеш в php

Тема в разделе "PHP для новичков", создана пользователем Kizer, 4 май 2019.

Метки:
  1. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    44
    Симпатии:
    0
    Возникла проблема,

    Warning: include_once(/sys/tm/error.tpl.php): failed to open stream: No such file or directory in B:\OSPanel\domains\filipp\sys\tm\index.tpl.php on line 39

    Обычный слеш заменился на обратный, когда пытался прописать путь к файлу.

    include_once('/sys/tm/'.$tpl.'.tpl.php');

    Я всегда работал с обычным слешом, здесь даже в ошибке пишется путь к файлу с обратным слешом.
    Как это исправить? В чём причина такого слеша? В документации php не совсем понял в чем проблема.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Нет никакой проблемы с использованием слеша. Проверь путь, который тебе пишет в ворнинге, видимо файла нет по этому адресу.
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
  4. Vanchot

    Vanchot Активный пользователь

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    В системе Виндовс не найдется такой путь /sys/tm/error.tpl.php, нужно либо абсолютный указывать от диска, либо относительный.
    PHP:
    1. include_once('B:/OSPanel/domains/filipp/sys/tm/error.tpl.php');
    PHP:
    1. include_once('./error.tpl.php');
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    @Vanchot страшно и не правильно
     
  6. Vanchot

    Vanchot Активный пользователь

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    Что страшно и что не правильно? __DIR__ - тоже константа.
     
  7. Kizer

    Kizer Новичок

    С нами с:
    19 авг 2018
    Сообщения:
    44
    Симпатии:
    0
    Спасибо, помог второй вариант. Раньше работал с линуксом, достаточно было просто '/', а не './'
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Хардкодить виндовый путь еще хуже, чем никсовый.

    Формируйте полный путь с использованием нек. базы (__DIR__, $_SERVER['DOCUMENT_ROOT'] и т.п.).
     
  10. Vanchot

    Vanchot Активный пользователь

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    Речь о том, что в Винда такой путь не найдет: /sys/tm/
    А уж как склеить, человек разберется, если раньше работал.
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    P.S. Обычно где-то в одном месте, например во фронте, определяют константу, а потом везде ее используют:
    Код (Text):
    1. define('THEME_PATH',dirname(__DIR__).'/mods/theme/');
    Или:
    Код (Text):
    1. define('THEME_DIR',dirname(__DIR__).'/mods/theme');
    (В первом случае база с трэйлинг слэшем.)