Information for: DEVELOPERS   PARTNERS

Correcting broken file uploads

The Cloud Platform Enterprise platform uses two or more load balancing servers to handle incoming requests, routing them to the web servers in a way that shares the load across multiple web servers.

Cloud Platform Enterprise users may experience problems with files that are uploaded to their Drupal applications using Plupload, Webform, Views Data Export, or other modules. The goal of these modules is to upload a file to one directory, and then perform an action. This process occurs in multiple steps. On multi-server platforms, this process may contact server A for one part and server B on the next action, which can lead to problems.

For example, when you use a module (such as the Plupload module) to upload a large file, the file is divided into chunks that are uploaded separately. On Cloud Platform Enterprise, the user’s requests could get switched from one web server to another during the upload. As a result, chunks of the uploaded file could arrive on different web servers, and the web servers would not be able to put them back together.

Here are some ways to correct this in both Drupal and the Cloud Platform Enterprise platform:


  • Several of the methods described on this page require changes to your website’s settings.php file. Changing the settings.php file will affect all file uploads, not only large files, and in certain circumstances can have negative performance impacts.
  • The tmp folders referenced in these methods must be manually created before use. Setting variables will not create the folders, and may cause upload issues until the folders are added manually.

Configuring modules

Contributed modules (including Plupload and Webform) can be configured to help work around these issues on a permanent basis, which work by first creating a temporary file for each uploaded file. After the temporary file is on the server, the file is then moved to its final destination. For applications running on a single instance, such as Cloud Platform Professional applications, this works without any errors. For applications running on Acquia Cloud Enterprise, however, you may experience errors when some of the uploaded files don’t save properly.

Files added by these modules to Cloud Platform Enterprise applications are saved to a temporary location that is not shared between the redundant provisioned hardware. It is possible for the move process to take place on a server different from the one that the file is uploaded to, which causes that move to fail and the upload to appear broken.

This is a common scenario for websites hosted on either redundant hardware or multiple servers. These modules allow you to overwrite the temporary file location to create the temporary files at a location shared between the hardware being used. The modules does not provide a user interface to set the variable to do this, but the Drush utility allows you to easily set the required variable, or the variable can be set in your website’s settings.php file.

  • Plupload
    Plupload is a popular plugin to enhance the file upload experience on a website. Plupload is also a popular choice for Drupal-based websites. To add the plupload library functionality to Drupal, you must install and enable the Plupload integration module.

    To set the temporary variable with Drush, use the following command:

    drush @[docroot].[environment] vset plupload_temporary_uri

    You can also set this in a more permanent fashion, by inserting code into your application’s settings.php file.

  • Webform
    The Webform module can have issues similar to what you may experience with Plupload. Versions 7.x-4.x or greater and 8.x-5.x or greater of the Webform module include the webform_export_path variable, which (depending on your Drupal version) you can set in your settings.php file in the same manner as you would with Plupload.

Setting the directory in settings.php

You can permanently set your website’s temporary files directory by adding a setting to the website’s settings.php file after the Acquia include statement. The code for you to use varies, depending on your Drupal version:


If you want to set a custom directory for storing temporary files, ensure the file path you provide to the file_temp_path parameter already exists. Otherwise, you may face issues with temporary files.

Drupal 8

For Drupal 8 and Drupal 9, use the following code:

$settings['file_temp_path'] = "/mnt/gfs/{$_ENV['AH_SITE_GROUP']}.

For Drupal 8.7 and earlier, the temporary file path is defined in $config:

$config['system.file']['path']['temporary'] =

Drupal 7

Module Variable value
Plupload $conf['plupload_temporary_uri'] = "/mnt/gfs/{$_ENV['AH_SITE_GROUP']}.{$_ENV['AH_SITE_ENVIRONMENT']}/tmp";
Webform $conf['webform_export_path'] = "/mnt/gfs/{$_ENV['AH_SITE_GROUP']}.{$_ENV['AH_SITE_ENVIRONMENT']}/tmp";

Using the D8 Editor File upload module

The Editor File upload module is compatible with Drupal 8 and Drupal 9 and CKEditor. It creates a button in the toolbar to link and upload data as part of content creation, rather than manually linking a file.

Using the Alternative Stream Wrappers module

The Alternative Stream Wrappers module for Drupal allows Drupal to continue to use the built-in stream wrappers (such as public:// and temporary://), but also use one or more alternative stream wrappers – for cases including the shared temporary directory. To use this module, complete the following steps:

  1. Install and enable the module.

  2. Edit your settings.php file and add code similar to the following to set a temporary directory:

    $conf['alt_stream_wrappers_alt-temp_path'] = "/mnt/gfs/{$_ENV['AH_SITE_GROUP']}.{$_ENV['AH_SITE_ENVIRONMENT']}/tmp";

    Be sure to set the temporary directory to a value based on your website’s installation, and the directory must both exist and be writable.

  3. Save your changes to the settings.php file.

For an example of this, see Using Views Data Export.

Alternative Stream Wrappers supports the Webform module. For more information, see on

Pinning temporarily to a web server


This method is for temporary use only and should be removed when you are not uploading critical files. Overuse of this method will cause performance problems for your application and, in a shared environment, any other customers on that server.

You can temporarily force all of your upload requests to the same server. To do this, Acquia recommends you use one of the following methods:

Using the Cloud Platform Sticky Sessions module

Although in the past the Cloud Platform Sticky Sessions module was suggested for use on Cloud Platform, it is no longer recommended, and the module is minimally maintained. Using the module can put a burden on one server in the group, and can cause performance problems for users whose sessions are directed to that server.

Using other modules

Other modules may also have issues in multi-server environments. For example, the Views Data Export module does not always work as expected. For more information, see Using Views Data Export.