Get your server issues fixed by our experts for a price starting at just 25 USD/Hour. Click here to register and open a ticket with us now!

Author Topic: Fix File Upload Issues with WordPress Running on Nginx on Ubuntu  (Read 1058 times)

0 Members and 1 Guest are viewing this topic.

joseletk

  • Guest
One of the common issues users encounter when managing a WordPress website of blog on Nginx web server is uploading files. WordPress allows users to upload new themes and plugins files, however, if your Nginx powered website isn’t configured to allow large file to be uploaded, the upload process will fail always.

Some common errors user get when dealing with file uploads with WordPress are: Http error attempting to upload media, the uploaded file exceeds the upload_max_filesize directive in php.ini, maximum execution time exceeded, allowed memory size exhausted and many more.

Before continuing with the steps below, please make sure to backup your system.

Step 1: Configure WordPress Directory Permisisons

First, make sure the directory WordPress is running in has the correct permission for Nginx webserver to operate. On Ubuntu systems, the root directory is almost always at /var/www/html.

So, run the commands below give Nginx web server full access to that directory.

Code: [Select]
# sudo chown -R www-data:www-data /var/www/html/
# sudo chmod -R 755 /var/www/html/

Step 2: Adjust PHP-FPM Setting

Next, adjust PHP-FPM settings to allow larger file uploads… By default, PHP-FPM is only allowed to upload a certain file size.. so there’s a limit. Adjust the file upload size limit and other directives in PHP-FPM.

On Ubuntu 17.04 and up, the default PHP-FPM configuration file is stored in the file below:

- /etc/nginx/7.x/fpm/php.ini

The x in the line above can either be a 0 or 1

So, open PHP-FPM configuration file by running the commands below and adjust the settings to suit your environment.

Code: [Select]
# sudo nano /etc/nginx/7.1/fpm/php.ini
Then scroll down the file line by line and adjust each directive with the value below:

Code: [Select]
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 100M
file_uploads = On
max_execution_time = 600
max_input_time = 600

Save your changes.

If the file size you’re uploading is greater than 100MB, then adjust the upload_max_filesize to be greater than the file size.

Step 3: Adjust Nginx Configuration

Nginx also has its own limit definitions. If you don’t define the size limit in Nginx configuration, whatever you do in the PHP configuration file may not apply to Nginx. To allow Nginx to also upload larger file, open Nginx configuration and add the values as defined below:

On Ubuntu systems, Nginx default site configuration files are stored at /etc/nginx/sites-available/default

If you have a custom file in there, adjust the values also.

Code: [Select]
server {
    listen 80;
    listen [::]:80;
    root /var/www/html/wordpress;
    index index.php index.html index.htm;
    server_name example.com www.example.com;

     client_max_body_size 100M;

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

location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      fastcgi_connect_timeout 300s;
      fastcgi_read_timeout 300s;
      fastcgi_send_timeout 300s;
  }[code]
}

Save the file and continue

Finally, restart Nginx and PHP-FPM for the new settings to take effect

Code: [Select]
# sudo systemctl reload nginx.serive
# sudo systemctl reload php7.1-fpm.service

This should do it.. Now go and try to upload the file you want with the size smaller than 100MB
==========================================================================