CakePHP 3: Ain’t gonna GET if it ain’t gotta GET

Written by James McDonald

April 1, 2016

Just installed CakePHP3 under nginx and tried to switch between pages of a paginated view and every time it would return the default 1st page.

The url for each page was

http://example.com/cake3/posts?page=2

Discovered using debug_kit that the GET request QUERY_STRING parameters weren’t being sent to CakePHP. The query string is everything after the question mark in the URL. In other words page=2.

This was because nginx wasn’t sending the query string to the PHP-FPM process.

But the fix:

    document_root /var/www/html/domain.com;

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 1d;
        #log_not_found off;
        rewrite ^/cake3(?!/webroot)(.+)$ /cake3/webroot$1? break;
        try_files $uri $uri/ =404;
    }

    location /cake3 {
           rewrite ^/cake3(?!/webroot)(.+)$ /cake3/webroot$1$is_args$args break;
           # put $is_args$args into the rewrite statement above
           try_files $uri $uri/ /cake3/index.php$is_args$query_string;
    }


    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
    }

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.

You May Also Like…

PHPSECLIB3 Client Algorithms

Recently our EDI supplier notified that they were changing their SFTP encryption and data integrity algorithms I use...