dongteng0748 2014-02-08 19:45
浏览 51
已采纳

无法让PHP在Nginx上运行 - 错误404

I'm fairly new to nginx and assumed it would be very straightforward to serve php with it since that setup is so common, but it seems like it's much more complex than I anticipated.

Here's my config..

server {
        listen 80;
        server_name domain.com www.domain.com;

        location / {
                root   /srv/www/domain.com/public_html;
                index index.php;
        }

# serve static files directly
#location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$
#    access_log        off;
#    expires           30d;

        location ~ [^/]\.php(/|$) {
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                if (!-f $document_root$fastcgi_script_name) {
                        return 404;
                }

                fastcgi_pass /var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

If I replace the "index.php" with a "index.html" file, nginx serves up the html perfectly.

I've seen guides that recommend modifying anything from iptables to php-fpm to the php.ini, to fast-cgi to sites-available..?

I'm not sure what many of these tutorials are trying to do exactly... for now I'd just like my index.php to serve up phpinfo(). What's the next step to troubleshoot the 404 error?

Is there a clear guide that goes over the various options available for serving php with nginx?

Debian Wheezy 7.3 on xen

  • 写回答

1条回答 默认 最新

  • dqyp50298 2014-02-08 19:56
    关注

    Try this config:

    server {
        listen   80;
        server_name domain.com www.domain.com;
        root /srv/www/domain.com/public_html;
        index index.php;
    
        location ~ ^(.+\.php)(/.*)?$ {
            fastcgi_pass  localhost:9000;
            include fastcgi_params;
        }
    }
    

    (assuming your index.php file is in /srv/www/domain.com/public_html)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?