Не работает redirect в slim framework 3.0

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да, еще немного подпить код в паре десятков мест - и можно жить
но я предпочитаю отключить на уровне composer
 

WMix

герр M:)ller
Партнер клуба
slim он изначально микроскопический, без дополнительных библиотечек сложно состряпать на нем чтонить useful, ну да кому я рассказываю :)
если под "подпить код в паре десятков мест" имеется в ввиду настроить то это обычное дело
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
знаешь, у меня отношение сложилось по 2й версии, когда "настроить" было нельзя, и я 2 месяца объяснял в багтрекере, что хардкодить буферизацию вывода - плохо

да, за год ситуация изменилась, но проект остался на 2м слиме, приходится править код фреймворка
 

Eliya

Новичок
Всем здравствуйте.
Решил вот покопаться с этим микрофреймворком. Почитал ваши мнения.
Ну и поставил третью версию через composer, всё встало хорошо, нет проблем.
Запускаю скрипт hello-word (взятый прямо из мануала) - не работает. Убираю параметр {name} - роутинг проходит. Вернул параметр назад, запускаю и из браузера, и из консоли - нет результата.
Точнее есть, но ошибочный. С параметром - "404", без параметра - "PHP Notice: Undefined index: name..." в логе (но это как раз и понятно, так и должно быть).

Ладно, думаю... Откатил на версию 2.0
Точнее, третью полностью снёс, вторую по новой установил. Аналогичный результат.

Скрипт стандартный (для версии 2.0):
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->get('/:name', function ($name) {
echo "Hello, $name";
});
$apt->run();

Угрохал на этот hello-word целый вечер. Ничего не сделал...
Господа, может, кто подскажет - где тут проблема?

P.S. Только не пишите, что "в голове", не смешно... ;)
 
Последнее редактирование:

jonjonson

Охренеть
В том, что нужно было в строке браузера набирать /vasya, а не просто /
Вообще работает и версия 3 нормально.
 

Eliya

Новичок
Это не решение.
Я так и делал, разумеется. Запрос в строке для обеих версий:
http://common/vasya
где http://common - document root
В консоли:
$php index.php /vasya

Ноль эмоций. Даже с обычной get строкой, как ?name=vasya
В Fat-Free работает. Здесь - нет. Вот я и пытаюсь разобраться - почему... :(
 
Последнее редактирование:

jonjonson

Охренеть
Файл .htaccess с содержимым
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
в папке есть?
 

jonjonson

Охренеть
Да. Настройте в index.php обработку и вывод ошибок

error_reporting(E_ALL);
ini_set("display_errors", true);
 

Eliya

Новичок
Это всё есть. Вот мой .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

Кстати, а я и не говорил, что у меня apache...
 

jonjonson

Охренеть
Если не апач, то настраивайте не апач.
У меня Slim 3 поднялся сразу и без всякой магии.
Настроил доступ к index.php без Slim. Проверил. Настроил Slim. Всё.

Насчёт отслеживания ошибок уже отметил.
 

Eliya

Новичок
Я и не говорю, что Slim не поднялся. С этим всё в порядке.
Входная страница не принимает параметры get. Как, в прочем, и любая другая.
 

jonjonson

Охренеть
Не знаю как в Slim 2, а в Slim 3 нужно передать в вашу функцию заменяющую контроллер параметры

PHP:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require '../vendor/autoload.php';

$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
    $name = $args['name'];
    $response->getBody()->write("Hello, $name");

    return $response;
});
$app->run();
 

Eliya

Новичок
Вот именно так у меня в коде для 3-й версии.
Строчка в строчку.

Да и дело тут не в версиях. Что-то где-то в настройках.
Но вот - где... Вопрос.
 

Eliya

Новичок
"GET /vasya HTTP/1.1" 404 492 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
 

Eliya

Новичок
М-да...
Всё оказалось гораздо прозаичнее, даже обидно как-то... :-/
Оказалось, что rewrite.load не был запущен для апача. Решилось через sudo a2enmode rewrite

Всем спасибо за поддержку. Вопрос закрыт.

P.S. Вот так, на ровном месте... дёргал уважаемых людей.. ;-)
 

AnrDaemon

Продвинутый новичок
Вообще-то в таком случае должны были сыпаться ошибки 500 ISE.
 
Сверху