Trying to install IP Board on my droplet but am having php issues.

February 15, 2017 423 views
PHP Ubuntu

So I am attempting to install IP Board on my droplet, running into issues that I fear are incredibly simple. Nginx is returning a 500 error when I try to access a php index file. I'm almost 100% sure I have no configured nginx right, I'm just not sure what to fix.

This is my sites-enabled default file.
server {
listen 80 defaultserver;
listen [::]:80 default
server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

    localhost;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
     rewrite ^/(.*)/$ /?page=$1 last;
rewrite ^(.*[^/])$ $1/ permanent;

}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
    #
    #       # With php7.0-cgi alone:
    #       fastcgi_pass 127.0.0.1:9000;
    #       # With php7.0-fpm:
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #       deny all;
    #}

}

Virtual Host configuration for example.com

You can move that to a different file under sites-available/ and symlink that

to sites-enabled/ to enable it.

server {

listen 80;

listen [::]:80;

server_name example.com;

3 Answers

@jameskueller1

As long as PHP-FPM is installed, the following should be all that you need to get things working.

server
{
    listen                          80 default_server;
    listen                          [::]:80;
    server_name                     yourdomain.com www.yourdomain.com;

    root                            /path/to/home/directory;

    location /
    {
        try_files $uri $uri/ =404;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;

        include fastcgi_params.conf;
    }
}

You'd need to modify the above to suit your domain, and your home directory (i.e root), then reload NGINX

The only issue you may run in to is with the default location block. That may need to be changed to something like the below as the default for the one above is to throw a 404 if a file or directory is not found.

try_files $uri $uri/ /index.php?$args;

You may also need to change:

fastcgi_pass   127.0.0.1:9000;

to:

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

If you've not set PHP-FPM up to use TCP (it defaults to sockets, which is what you have set).

  • @jtittle
    Sorry it took me so long to respond, my nginx fails to start with that configuration file. I get the error:
    Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

my current config file:
server {
listen 80 defaultserver;
listen [::]:80 default
server;
server_name crew289.com www.crew289.com;

    root /var/www/html;


     location /
{
    try_files $uri $uri/ /index.php?$args;
}

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_index  index.php;

    include fastcgi_params.conf;
    }

}

Have another answer? Share your knowledge.