Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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
    location ~ \.php$ {
        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;
share|improve this question
up vote 3 down vote accepted

you have a type in your php code:

before: <? phpinfo(); ?>

after: <?php phpinfo(); ?>

try that.

share|improve this answer
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? – jwbensley Nov 11 '11 at 14:48
3 short_open_tag, thats what you are looking for. – nce Nov 11 '11 at 14:52
Thanks NCE that is exactly what I'm looking for! :D – jwbensley Nov 11 '11 at 15:13
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. – Robert Van Sant Nov 11 '11 at 15:18

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.