<rmcreative>

RSS

nginx, php-fpm, Yii и красивые URL

28 марта 2014

Помогал недавно с очень странной проблемой. На сервере были nginx, php-fpm и Yii. Всё работало нормально, но при попытке убрать index.php из URL через showScriptName=false показывалась исключительно главная страница. То есть роутинг вообще не происходил.

Путём долгого совместного копания в настройках сервера, сравнения с рабочими конфигурациями и гугления успешно забытое решение проблемы вновь нашлось. А именно, в php.ini должна присутствовать строчка cgi.fix_pathinfo=0.

Комментарии RSS

  1. №8916
    Spider
    Spider 28 марта 2014 г., 21:56:28

    Путём долгого совместного копания в настройках сервера, сравнения с рабочими конфигурациями и гугления

    а print_r($_SERVER) разве не лучше бы помог в данной ситуации?

  2. №8917
    Grigori
    Grigori 28 марта 2014 г., 23:38:49

    у меня такой проблемы с fix_pathinfo=1 не возникало, могу проверить. конечно, fix_pathinfo=0 ставить нужно, но роутинг работал и с 1

  3. №8918
    verysimplenick
    verysimplenick 29 марта 2014 г., 14:50:31

    Даже на хабре уже писали об необходимости cgi.fix_pathinfo=0, даже не знаю зачем оставлять дефолтный 1 при использовании nginx + fpm

  4. №8919
    sam002
    sam002 29 марта 2014 г., 16:44:45

    Это старый костыль. Просто надо таскать в конфигах NGINX-а коммент, уже и не знаю откуда пошло, но везде как-то так оставляют начало блока для обработки php:

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        ....
    }
    
  5. №8922
    Vadim
    Vadim 30 марта 2014 г., 12:42:32

    Так вроде об этом говориться чуть не в всех мануалах по установке этого стека. В digitalocean точно).

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.