Я добавляю новые страницы в 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
файл. Вам нужно будет убедиться, что необходимая информация передается вашему контроллеру.