За последние 24 часа нас посетили 18433 программиста и 1630 роботов. Сейчас ищут 1783 программиста ...

Баг с символом в php 7 или в Apache 2.4 или.....

Тема в разделе "Прочие вопросы по PHP", создана пользователем vayas, 9 июн 2016.

  1. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Кто-нибудь сталкивался с багом если в адресной строке ввести русские символы, а именно букву "Х" (после которой должны идти ещё какие - то символы) то возвращается ошибка.
    http://localhost/ветхий
    Not Found
    The requested URL /ветхий was not found on this server.
    Эта проблема только с одним символом и в случае если используется autoload, проверить можно используя любой фреймворк.
    Без буквы "Х" страница открывается нормально.

    В другой версии php такой проблемы нет. У кого установлен ещё php7 что бы была возможность проверить.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Да, это Apache. Он говорит что нет такого файла

    Причём тут это?

    Пиши на хостинг если хочешь чтобы ошибка была в правильной кодировки или что тебе надо?
     
  3. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Мне нужен человек у которого установлен локально php7 или на хостинге.
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    У меня всё есть
     
  5. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Код (Text):
    1. Not Found
    2.  
    3. The requested URL /привет was not found on this server.
    4.  
    5. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
    Вот результат
     
  6. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Можно скрин ещё phpinfo.
    Какой у Вас стоит фреймворк и рабочий url? (например /blog/post/test-article) Если id исправить на тот который не существует вернёт ошибку 404 которую обрабатывает сам фреймворк. Так происходит?
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    при чём тут framework? Если apache настроен чтобы выдавать 404 при отсутствии файла, папки то это нормально,
    ты с помощью mod_rewrite можешь все не существующие запросы перенаправлять на PHP скрипт

    например через .htaccess
    Код (Text):
    1. RewriteCond %{REQUEST_FILENAME} !-f
    2. RewriteCond %{REQUEST_FILENAME} !-d
    3. RewriteRule . index.php
    [​IMG]
     
    metadon нравится это.
  8. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    @denis01 У вас какой фреймворк имеется всё таки? И ссылка на какую - нибудь статью, можешь отправить.
     
  9. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    metadon нравится это.
  10. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    да, всё так происходит
     
  11. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    А какой именно у вас фреймворк?
     
  12. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну например Yii2

    ответь, при чём тут framework, я заинтригован на 146%!
     
    metadon нравится это.
  13. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    А ссылка на статью как выглядет?
    --- Добавлено ---
    Потому что со статичными файлами проблем никаких нет, но те данные которые динамически формируются, и там где используется роутинг и spl вот здесь и появляется проблема. Но не просто у статьи а если в середине этого url добавить русскую букву Х
     
  14. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    там если нужно путь не по умолчанию controller/action, то используются регулярные выражения, а им без разницы какие там символы, главное u флаг использовать в regex.

    что значит статичные файлы?

    при чём тут роутинг и spl? Хотя классы можно на unicode/русском назвать, но не надо так делать

    Постарайся всё подробно описать, мало данных, ничего не понятно, сейчас лето и телепаты в отпуске :eek:
     
    metadon нравится это.
  15. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Денис отправьте мне ссылку на вашу локальную статью. (Но что бы это не статичный файл был, а данные брались из базы.)
     
  16. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    вот тут я мало что понял. и причём тут база данных?
     
    metadon нравится это.
  17. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    http://127.0.0.1/wikipapia/frameworks/про-то-как-yii-код-за-строчками-ходил-84975.phtm
    Вот на эту ссылку у меня появляется ошибка 404 которую выбрасывает сам apache.
    Но если url изменить только лишь на одну букву
    http://127.0.0.1/wikipapia/frameworks/про-то-как-yii-код-за-строчками-одил-84975.phtm
    то 404 ошибку выдаёт уже сам фреймворк (т.е. генерирует шаблонную ошибку страница не найдена)
    К статичным файлам это не относиться, они отрабатываются нормально.
     
  18. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    metadon нравится это.
  19. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А поэтапно протестировать не судьба?
    Запусти через встроенный веб сервер в пхп скрипт. Проверь разные варианты. Потом переходи на апач и его конфиги. Что тебе даст фреимворк? o_O
     
  20. sergeyzuzic

    sergeyzuzic Новичок

    С нами с:
    20 сен 2015
    Сообщения:
    2
    Симпатии:
    0
    Сейчас столкнулся с подобной проблемой. Баг не в php, до него дело не доходит. Запрос прерывает Apache.
    В OpenServer данный косяк есть с любой связкой, на реальном сервере все работает отлично.
     
  21. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @sergeyzuzic Apache настроен так что если не видит файла, то сообщает о его отсутствии. Всё нормально. Просто опиши какая у тебя задачи и как ты её хотел решить и у тебя это не вышло.
     
    metadon нравится это.
  22. sergeyzuzic

    sergeyzuzic Новичок

    С нами с:
    20 сен 2015
    Сообщения:
    2
    Симпатии:
    0
    @denis01 Это понятно, дело в том, что в .htaccess настроено перенаправление:
    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{SCRIPT_FILENAME} !-d
    3. RewriteCond %{SCRIPT_FILENAME} !-f
    4. RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
    Но запрос не доходит до скрипта.
     
  23. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Да дело не в PHP, потому что точно с такой же версией в UNIX, всё в порядке, а под виндой есть проблемы.

    Проблема ещё в том, что сам апач не показывает в логах нужную ошибку, и в системных логах то же я её не нашёл.

    А ещё особенность в том, что если на сервере есть статичная папка или файл по данному URL с нужным символ, то apache обрабатывает её нормально.

    Т.е. если есть папка /ветхий, то он зайдёт на неё, но если мы будем использовать htaccess для перенаправления на индексный файл, то уже ошибка. Вот такие дела, и это только под виндой.
     
    #23 vayas, 29 июн 2016
    Последнее редактирование: 29 июн 2016
  24. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @vayas

    Попробуй такое правило
    PHP:
    1. RewriteEngine on
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule . index.php
    и какая версия apache? может она старая в которой этот баг не починили
     
    metadon и vayas нравится это.
  25. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Еще можно включить отладку рерайтера и посмотреть логику разрешения запроса.