2016-09-05 3 views
0

Я столкнулся со странной проблемой, которую я не могу объяснить. Окружающая среда:codeigniter отправляет пустую страницу

  • Ubuntu 16,04
  • Nginx 1,10 с PHP-FPM
  • PHP 7.0.8

Так что я мигрировали из хост-сервера с Apache и php5 на этот новый сервер. Первые испытания были успешными. Страница была запущена и, казалось, была в порядке.

Затем я столкнулся с проблемой, что некоторые страницы не могли быть вызваны. Ответ HTTP был 200, но страница была пустой. Хром сказал мне нетто :: ERR_CONTENT_DECODING_FAILED

Я узнал, что разница между рабочими страницами и пустыми страницами заключалась в том, что неконтроллер эхом отозвался json_encode() в конце;

Это мой контроллер:

public function some_controller() 
{ 
    $result = ["test" => "abcde"]; 
    echo json_encode($result); 
} 

Это закончится сети :: ERR_CONTENT_DECODING_FAILED

Это мой workarround:

public function some_controller() 
{ 
    $result = ["test" => "abcde"]; 
    echo json_encode($result); 
    exit(); 
} 

Так следующее неясна:

  1. Почему я должен выйти() мой контроллер сейчас?
  2. Что такое CI после выполнения функции контроллера?
  3. Почему это было с Apache и PHP5? Какая теперь разница?

Спасибо всем

+0

Удалить закрывающие теги PHP из файлов, если они есть. – Tpojka

+0

Ваш первый код работает нормально. – Benyi

ответ

0

Я нашел эту проблему самостоятельно. После установки php7.0-xml проблема исчезла.

Но может ли кто-нибудь сказать мне, зачем нужен XML-модуль для ответов JSON? Возможно, это не JSON, это кодигнитер, которому нужен XML-модуль (после того, как контроллер передан)?