Массив записей всегда пуст в приложении CodeIgniter, работающем в nginx - PullRequest
2 голосов
/ 18 мая 2011

У меня nginx 1.0.2 установлен на Ubuntu 11 с php 5.3.5, работающим с FPM / FastCGI.

На моем кодеигниторе я получаю следующую проблему.У меня есть простая форма входа в систему с полем имени пользователя и пароля.Когда я отправляю форму, массив $ _POST пуст.Так что это $ this-> input-> post ('username') и $ this-> input-> post ('password').

Приложение отлично работает на apache.Я попытался создать простую тестовую форму на простом php-файле, и данные $ _POST работали отлично.Я могу предоставить файлы конфигурации, если это необходимо.Есть идеи?

Обновление : Наконец-то это сработало.В моем конфиге vhost были перенаправления, которые приводили к потере почтовых данных.Рабочий конфиг vhost можно найти здесь: http://codeigniter.com/forums/viewthread/90231/#455528

Ответы [ 4 ]

1 голос
/ 21 мая 2011

Мне кажется, я знаю проблему сейчас.Тот факт, что он возвращает 404 и обрабатывает ваш скрипт, говорит мне, что error_page - это то, что делает «rewrite» для получения запроса к /index.php.Страница error_page в неназванное место преобразует запрос в GET, поэтому error_page 404 /index.php выполняет внутреннее перенаправление в /index.php, но в процессе удаляет тело запроса (и отсутствие= означает, что код состояния не перезаписывается целью error_page).Я не уверен, почему все эти ifs не выполняют перенаправление (если обработка в nginx действительно странная, так что это хорошая идея, чтобы избежать их), но я думаю, что если вы используете именованное расположение для вашей страницы ошибки, это будетсохраните тело запроса и заполните $ _POST.Попробуйте заменить текущую директиву error_page на:

location @redir {
  rewrite ^ /index.php;
}
error_page 404 = @redir;
0 голосов
/ 21 июня 2013

У меня была похожая проблема, и я попробовал все упомянутое здесь. Когда я понял это, все было очень просто, я не назвал свои входные переменные в форме. Я пропустил параметр имени.

<input type="name" placeholder="Name" name="name">
0 голосов
/ 24 марта 2012

Я использовал свой собственный PHP-фреймворк с такими же переписываниями URI, что и CI, и на сервере Nginx были похожие проблемы, потому что у моих форм были такие действия: action = "admin / login / post", и мне пришлось изменить их до концаphp action = "admin / login / post.php", чтобы они могли работать, но для этого необходимо изменить переписать URI вашего класса CI, чтобы заменить этот .php из строки uri.

0 голосов
/ 18 мая 2011

отметьте это:

<form method="post">

вы используете метод post?

попробуйте запустить профилировщик:

$this->output->enable_profiler(TRUE);

увидеть там какой-либо вывод POST?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...