Solved thread

This post is marked as solved. If you think the information contained on this thread must be part of the official documentation, please contribute submitting a pull request to its repository.

setContentType('application/json', 'utf-8') issues~~

$app->get('/checkAccount', function () use ($app) {

    $app->response->setContentType('application/json', 'utf-8');

    $username = null;
    $password = null;

    if (isset($_GET['Username'])) {
        $username = $_GET['Username'];
    if (isset($_GET['Password'])) {
        $password = $_GET['Password'];

    $user_id = User::verifyUser($username, $password);
    if ($user_id == null) {
        $status = 'Username and password have not authorized';
    else {
        $status = 'Username and password have authorized';

    $data = array(
        'Username' => urlencode($username),
        'Password' => urlencode($password),
        'Status' => urlencode($status),

    echo urldecode(json_encode($data));

I have checked response header, why always text/html? I have set setContentType('application/json', 'utf-8')!!!!!!!!!!!!!

Here is response: HTTP/1.1 200 OK Date: Sat, 07 Jun 2014 00:48:33 GMT Server: Apache/2.4.4 (Win64) PHP/5.4.12 X-Powered-By: PHP/5.4.12 Content-Length: 102 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8

Page display is: {"Username":"sally","Password":"123456781","Status":"Username and password have authorized"}


anyone can help me?



Why don't you use $this->response->setJsonContent()?

$app->get('/checkAccount', function () use ($app) {
        $response = new \Phalcon\Http\Response();

        // your logic here

        return $response;


I have tried but same Content-Type: text/html; charset=UTF-8

This: $app->response->setContentType('application/json', 'utf-8');

should already be json but I do not know why still text/html, you can try too, i think this is bug!!!


Just check your server setup on mod_mime and mime-types.

edited Jun '14

???????? could you explain in details, i am a beginner, thx I have loaded mod_mime in Apache 2.4 with WAMP

edited Jun '14

This depends of your system. In general case, see Apache manual.

and /etc/mime.types


How about Nginx, I am using test for Apache, but the production is Nginx 1.3.x


I. For your attention

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

and check /etc/nginx/mime.types

This file doesn't have json settings by default.

II. Example for FPM describe in server section

 location ~* \.php$ {
   default_type  application/octet-stream;
   try_files $uri =404;
   include /etc/nginx/fastcgi_params;
   fastcgi_split_path_info  ^(.+\.php)(/.+)$;
   fastcgi_index index.php;
   fastcgi_param  SCRIPT_FILENAME /full/path/to/index.php;
   fastcgi_param  SCRIPT_NAME     /index.php;
   fastcgi_param  QUERY_STRING    $uri$args;
   fastcgi_param  REQUEST_METHOD  $request_method;
   fastcgi_param  CONTENT_TYPE    $content_type;
   fastcgi_param  CONTENT_LENGTH  $content_length;
   fastcgi_param  REQUEST_BODY    $request_body;

III. Update your Nginx for safe - actual version is 1.6


thanks, and could you help me to solve another issues, which is using message queue in phalcon?