Назад | Перейти на главную страницу

Nginx неправильный путь для включаемого файла в CodeIgniter

Я добавляю новые страницы в CI (CodeIgniter 3), включая нижний колонтитул, заголовок и другие файлы .php (созданные CodeCharge Studio), страницы CI (контроллеры) работают с файлом /ci.php, и все работает хорошо на Apache2.

Поскольку я также перехожу на NginX, когда я вызываю /ci.php, все идет хорошо, и когда я вызываю тот же вывод, но из /ci.php/pages/test_pages, я получаю часть тела моей страницы, и в моем включенном файлы:

[ошибка] 12165 # 0: * 698 FastCGI отправлен в stderr: «Невозможно открыть основной скрипт: /Users/fedibelkacem/Documents/workspace/eMashq/ci.php/pages/ClientI18N.php (Нет такого файла или каталога)», пока чтение заголовка ответа от восходящего потока, клиент: 127.0.0.1, сервер: emashq.fbe, запрос: "GET /ci.php/pages/ClientI18N.php?file=Functions.js&locale=en HTTP / 1.1", восходящий поток: "fastcgi: //127.0.0.1:9000 ", хост:" emashq.fbe: 81 ", реферер:"http: //emashq.fbe: 81 / ci.php / pages / test_pages"

NginX ищет Clientl18N.php не в том месте. Он находится в корне и, как я уже сказал, на Apache работает хорошо.

Вот мой файл конфигурации NginX VHost:

server {
    listen 81;
    server_name emashq.fbe;

    root /Users/fedibelkacem/Documents/workspace/eMashq;

    index index.php index.html;

    location / {
            # if I put /index.php, it forces /ci.php/pages/test_pages to call 
            # /ci.php/pages/index.php and I get an other but the same type error 
            # with No input file specified on the screen!
            try_files $uri $uri/ /ci.php;
    }

    location ~* \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
    }
}
# $config['index_page'] = 'ci.php'; // or = ‘’ in CI\applications\config.php 
# doesn’t make difference!

Пожалуйста, помогите мне найти правильную конфигурацию NginX для запуска моего /ci.php/controller/etc.

Видеть этот документ для ряда предложений по решению Передача неконтролируемых запросов в PHP проблема.

В uri включает pathinfo которые должны обрабатываться отдельно и передаваться ci.php сценарий. Распространенное решение - изменить определение вашего местоположения на что-то вроде:

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    ...
}

Смотрите также этот документ. Не все реализации имеют одинаковые директивы, перечисленные в fastcgi_params файл. Вам нужно будет убедиться, что необходимая информация передается вашему контроллеру.