0

I'm trying to set up NGINX with PHP and FPM. No installation errors, NGINX and PHP-FPM are running (I can see them with ps aux | gre nginx and ps aux | grep php). HTML pages are working fine.

Browsing to mysite/test.php just shows the PHP source code when I "view source" of the page though (It's literally <? phpinfo(); ?>;). There are no errors in my NGINX (error.log) or PHP-FPM (php5-fpm.log) error logs.

I can't work out why it isn't executing the code?

cat sites-enabled/default
server {

    root /usr/share/nginx/www;
    index index.php index.html index.htm;
    server_name testsite.tld;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html
        try_files $uri $uri/ /index.html;
    }

    #error_page 404 /404.html;

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

cat fastcgi_params 
fastcgi_param   QUERY_STRING        $query_string;
fastcgi_param   REQUEST_METHOD      $request_method;
fastcgi_param   CONTENT_TYPE        $content_type;
fastcgi_param   CONTENT_LENGTH      $content_length;

fastcgi_param   SCRIPT_FILENAME     $request_filename;
fastcgi_param   SCRIPT_NAME     $fastcgi_script_name;
fastcgi_param   REQUEST_URI     $request_uri;
fastcgi_param   DOCUMENT_URI        $document_uri;
fastcgi_param   DOCUMENT_ROOT       $document_root;
fastcgi_param   SERVER_PROTOCOL     $server_protocol;

fastcgi_param   GATEWAY_INTERFACE   CGI/1.1;
fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR     $remote_addr;
fastcgi_param   REMOTE_PORT     $remote_port;
fastcgi_param   SERVER_ADDR     $server_addr;
fastcgi_param   SERVER_PORT     $server_port;
fastcgi_param   SERVER_NAME     $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS     200;

1 Answer 1

3

you have a type in your php code:

before: <? phpinfo(); ?>

after: <?php phpinfo(); ?>

try that.

3
  • Well that has worked, and whilst I must say thanks I have to ask why? On apache servers I have I don't always have to put <?php I just open with <? some_php_code_here ?> then I can write some html, then drop back into php <? blah_blah ?> and so on. Perhaps you must put <?php on the first instance on a page and the rest don't require it?
    – Baldrick
    Nov 11, 2011 at 14:48
  • 3
    php.net/manual/en/ini.core.php short_open_tag, thats what you are looking for.
    – nce
    Nov 11, 2011 at 14:52
  • yes, it's because short tags aren't implemented or turned on. also, i believe zend is moving away from short tags, though you have the option to turn it on. Nov 11, 2011 at 15:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .