Кто-нибудь сталкивался с багом если в адресной строке ввести русские символы, а именно букву "Х" (после которой должны идти ещё какие - то символы) то возвращается ошибка. http://localhost/ветхий Not Found The requested URL /ветхий was not found on this server. Эта проблема только с одним символом и в случае если используется autoload, проверить можно используя любой фреймворк. Без буквы "Х" страница открывается нормально. В другой версии php такой проблемы нет. У кого установлен ещё php7 что бы была возможность проверить.
Да, это Apache. Он говорит что нет такого файла Причём тут это? Пиши на хостинг если хочешь чтобы ошибка была в правильной кодировки или что тебе надо?
Код (Text): Not Found The requested URL /привет was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. Вот результат
Можно скрин ещё phpinfo. Какой у Вас стоит фреймворк и рабочий url? (например /blog/post/test-article) Если id исправить на тот который не существует вернёт ошибку 404 которую обрабатывает сам фреймворк. Так происходит?
при чём тут framework? Если apache настроен чтобы выдавать 404 при отсутствии файла, папки то это нормально, ты с помощью mod_rewrite можешь все не существующие запросы перенаправлять на PHP скрипт например через .htaccess Код (Text): RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php Спойлер: PHPINFO()
@denis01 У вас какой фреймворк имеется всё таки? И ссылка на какую - нибудь статью, можешь отправить.
Давай тогда задам только один вопрос, без дополнительной информации. При чём тут framework? Почитать от простого к сложному: http://www.yiiframework.com/doc-2.0/guide-README.html http://symfony.com/doc/2.8/book/index.html http://symfony.com/doc/2.8/cookbook/index.html
А ссылка на статью как выглядет? --- Добавлено --- Потому что со статичными файлами проблем никаких нет, но те данные которые динамически формируются, и там где используется роутинг и spl вот здесь и появляется проблема. Но не просто у статьи а если в середине этого url добавить русскую букву Х
там если нужно путь не по умолчанию controller/action, то используются регулярные выражения, а им без разницы какие там символы, главное u флаг использовать в regex. что значит статичные файлы? при чём тут роутинг и spl? Хотя классы можно на unicode/русском назвать, но не надо так делать Постарайся всё подробно описать, мало данных, ничего не понятно, сейчас лето и телепаты в отпуске
Денис отправьте мне ссылку на вашу локальную статью. (Но что бы это не статичный файл был, а данные брались из базы.)
http://127.0.0.1/wikipapia/frameworks/про-то-как-yii-код-за-строчками-ходил-84975.phtm Вот на эту ссылку у меня появляется ошибка 404 которую выбрасывает сам apache. Но если url изменить только лишь на одну букву http://127.0.0.1/wikipapia/frameworks/про-то-как-yii-код-за-строчками-одил-84975.phtm то 404 ошибку выдаёт уже сам фреймворк (т.е. генерирует шаблонную ошибку страница не найдена) К статичным файлам это не относиться, они отрабатываются нормально.
начинаю похоже понимать, а у apache как настроен mod_rewrite? Может ты его через htaccess настраиваешь?
А поэтапно протестировать не судьба? Запусти через встроенный веб сервер в пхп скрипт. Проверь разные варианты. Потом переходи на апач и его конфиги. Что тебе даст фреимворк?
Сейчас столкнулся с подобной проблемой. Баг не в php, до него дело не доходит. Запрос прерывает Apache. В OpenServer данный косяк есть с любой связкой, на реальном сервере все работает отлично.
@sergeyzuzic Apache настроен так что если не видит файла, то сообщает о его отсутствии. Всё нормально. Просто опиши какая у тебя задачи и как ты её хотел решить и у тебя это не вышло.
@denis01 Это понятно, дело в том, что в .htaccess настроено перенаправление: Код (Text): RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ /index.php?/$1 [L,QSA] Но запрос не доходит до скрипта.
Да дело не в PHP, потому что точно с такой же версией в UNIX, всё в порядке, а под виндой есть проблемы. Проблема ещё в том, что сам апач не показывает в логах нужную ошибку, и в системных логах то же я её не нашёл. А ещё особенность в том, что если на сервере есть статичная папка или файл по данному URL с нужным символ, то apache обрабатывает её нормально. Т.е. если есть папка /ветхий, то он зайдёт на неё, но если мы будем использовать htaccess для перенаправления на индексный файл, то уже ошибка. Вот такие дела, и это только под виндой.
@vayas Попробуй такое правило PHP: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php и какая версия apache? может она старая в которой этот баг не починили