Skip to main content

Drupal Modules with Known Issues

A list of Drupal modules that are not supported and/or require workarounds.


This page lists modules that may not function as expected or are currently problematic on the Pantheon platform. This is not a comprehensive list (refer to other issues). We continually update it as problems are reported and/or solved. If you are aware of any modules that do not work as expected, please contact support.

We do not prevent you from installing and using these plugins/modules. However, we cannot provide support for incompatible modules, or if they are used against the guidance provided here.

Module Maintainers: If your work is listed here, please reach out to us. We're happy to help provide information that can lead to conflict resolutions between your code and the platform.

If your work is already updated but still listed here, let us know so we can remove it, or submit a pull request.


APC - Alternative PHP Cache

Issue: APC is in-memory and limited to a single instance. It cannot span multiple server environments.

Solution: Pantheon recommends Redis as a caching backend, which has better performance.


Adaptive Image Styles

Last reviewed: Feb 10 2020

Issue: This module requires edits to the nginx.conf which is not currently supported on the platform. Refer to the Platform Considerations documentation and https://www.drupal.org/node/1669182 for more information.


Apache Solr Multilingual

Issue: When the Apache Solr Multilingual module is enabled, the default class variable set by the Pantheon Apache Solr module is changed, and the site will be unable to connect to the Solr server.

If you have already enabled the Apache Solr Multilingual module and found that your site can no longer connect to the Solr server, you will need to first disable and uninstall the module. Next, disable and re-enable the Pantheon Apache Solr module. This will add the class variable back so your site can connect to the Solr server again.


Background Process

Issue 1: The module allows for Drupal to perform "parallel" (asynchronous non-blocking mode) requests. However, there are a number of limitations working in a distributed environment and function correctly on the platform. Refer to https://www.drupal.org/node/2233843 for more information.

Issue 2: Background processes are not running or are running intermittently. When a stream socket is set to non-blocking mode, the pointer immediately goes out of scope after the socket is written. The remote server appears to close the connection without accepting the input.

Solution 2: Add a sleep function before the socket pointer goes out of scope. A 50ms to 250ms is a sufficient sleep time to avoid the connection being closed before the socket is written. Review the example below.

sleep() function added to background_process_http_request_initiate() in a custom module:

   if ($timeout > 0) {
      stream_set_timeout($fp, floor($timeout), floor(1000000 * fmod($timeout, 1)));
      fwrite($fp, $request);
      stream_set_blocking($fp, 0);
      sleep(1);
   }

Refer to https://www.drupal.org/node/2619902 for more information.


Backup and Migrate

Issue: The Backup and Migrate module can create large archives and cause issues with the tools in the Database / Files tab of the Dashboard. Refer to the Backups Tool guide for more information.

Solution: You can use the automated backups that are available on the Dashboard for each environment. If you want to access your backups and copy it to your own repository (Amazon S3, FTP server, etc), consider using a bash script. You can do that by running it in your local system, or use an external server, or a service that runs cron jobs for you.


Basic HTTP Authentication

Last reviewed: Aug 25 2020

Issue: This module conflicts with Pantheon's Dashboard Security Tool when both are enabled on Drupal sites, resulting in 403 errors.

Solution: We suggest using Pantheon's Dashboard Security Tool if you want to set up HTTP authentication. Additionally, refer to Advanced Redirects and Restrictions for more options to control and restrict access to some or all of your site.


BigPipe

Last reviewed: Jan 09 2024

Issue: The Pantheon Edge layer buffers text output, and BigPipe depends on being able to stream text output. Since BigPipe provides no benefit on Pantheon sites, we recommend disabling it.


Boost

Issue: Boost is an unnecessary caching layer that may cause issues. Every site on Pantheon can leverage our robust page caching infrastructure that returns pages for anonymous visitors at the highest possible performance. Refer to Pantheon's Global CDN documentation for more information.


Cache Expiration

Issue: This module doesn't support Pantheon's granular cache clearing and header system.

Solution: Install the Pantheon Advanced Page Cache module to dynamically purge content from cache on content update.


Composer Manager

Last reviewed: Feb 10 2020

This module has been deprecated by its authors for Drupal 8 and above. The suggestions made below are for Drupal 7 users, and are not guaranteed to be successful in all use cases.

If you're creating a new site that needs Composer-managed libraries, we strongly recommend using Drupal 9 or newer.

Issue: Composer Manager expects write access to the site's codebase via SFTP, which is prevented in Test and Live environments on Pantheon by design.

Solution: As suggested within the module documentation, manage dependencies in Dev exclusively. Place the following configuration within settings.php to disable autobuild on Pantheon. This will also set appropriate file paths for Composer so that checks to see if the path is writable will not fail. Packages, however, are stored within the root directory of the site's codebase and version controlled:

settings.php
if (isset($_ENV['PANTHEON_ENVIRONMENT'])) {
    # Set appropriate paths for Composer Manager
    $conf['composer_manager_file_dir'] = 'private://composer';
    $conf['composer_manager_vendor_dir'] = $_SERVER['HOME'] . '/code/vendor';
    # Disable autobuild on Pantheon
    $conf['composer_manager_autobuild_file'] = 0;
    $conf['composer_manager_autobuild_packages'] = 0;
}

You also need to create the directory path sites/default/files/private/composer.

This disables auto-building in all Pantheon environments. This will allow Drush commands such as pm-enable and pm-disable to function correctly in both Git and SFTP modes as Composer Manager will only update packages and the autoloader when explicitly told to do so via drush composer-manager [COMMAND] [OPTIONS] or drush composer-json-rebuild. This is the setting recommended by Pantheon. While composer.json can be rebuilt via Terminus while the DEV site is in SFTP mode, composer install must be run locally, committed via Git, and pushed back to Pantheon.


Composer Merge Plugin

Last reviewed: Aug 13 2021

This plugin is deprecated.

Issue: The wikimedia/composer-merge-plugin package plugin automatically runs composer update during composer install, causing conflicts with Pantheon's Integrated Composer framework.

Solution: Sites managing dependencies for a custom project should move to the recommended path repository method.


DropzoneJS

Last reviewed: Jun 30 2020

Issue: Uploads using the "Media Entity DropzoneJS" widget do not reliably work on Pantheon. The widget relies on a temporary path that is not shared between application containers. Refer to this issue for more information.



Dynamic Entity Reference

Last reviewed: Jun 09 2023

Issue: Dynamic Entity Reference isn't supported on Pantheon because MySQL triggers are not supported. Stored procedures and events are also not supported. Refer to Database Stored Procedures in the Platform Considerations guide for more information.


Feeds

Last reviewed: Jan 25 2022

Issue: When attempting to manually import using the Feeds plugin in cron, the following error message is displayed:

RuntimeException: File <em class="placeholder">/tmp/feeds_http_fetcherOK5Hbi</em> does not exist. in Drupal\feeds\Result\FetcherResult->checkFile() (line 53 of /code/web/modules/contrib/feeds/src/Result/FetcherResult.php)

Solution: The Persistent Temporary Path Workaround will not work for this issue because the /tmp directory is hardcoded, and therefore not part of the module's configuration. The solution proposed for the persistent temporary path workaround does not work on load balanced environments and relies on a persistent directory. Note that Pantheon cautions against putting these files outside the tmp directory because the file will not be deleted automatically after the transfer is complete, which can create a very large set of files.

We recommend following the issue on Drupal and requesting that the module maintainer fix the module.


Front

Last reviewed: Jan 03 2018

Issue: The Drupal 7 version of the module disables caching for the front page.

Solution: Apply a patch to the module to allow caching for anonymous users. Note that this patch doesn't work with the Full or Redirect options.


H5P

Last reviewed: Nov 05 2019

Issue: Adding new libraries or content types from the H5P hub through the admin interface (or uploading large files from slow internet connections) can hit our max execution timeout, resulting in a 504 error:

While not a solution, re-running the Install process multiple times may result in success. You can also attempt to upload .hp5 files from your local computer. If local uploads hit the timeout, please try from a faster connection.


Honeypot http:BL

Last reviewed: Jul 10 2019

Issue: http:BL only has a module to take advantage of the service for Apache. Pantheon runs on nginx web servers and Apache modules are not compatible with the Platform.


IMCE 6.x and IMCE 7.x

Issue: Operations on directories containing an inordinate amount of files will likely hit the load balancer timeout threshold (30 seconds).

Solution 1: Upgrade to the latest version of IMCE if possible. IMCE for Drupal 7 now has an option on Dev (not a tagged release) to disable the metadata, which prevents timeouts.

Solution 2: Break up the files into smaller groups so that directories are less populated. Another option is to rewrite imce_image_info() so that your site's caching backend (Database or Object Cache) is used for operations on highly populated directories:

  1. Enable the Object Cache, otherwise the database cache is utilized. (Depending on your site's configuration, you may not need to enable the object cache.)

  2. Edit imce/inc/imce.page.inc and replace the contents of imce_image_info() with:

    imce.page.inc
    $cache_key = 'imce-' . $file;
    $cache = cache_get($cache_key);
    if ($cache) {
     return $cache->data;
    }
    if
    (is_file($file) && ($dot = strrpos($file, '.')) &&
    in_array(strtolower(substr($file, $dot+1)), array('jpg', 'jpeg',
    'gif','png')) && ($info = @getimagesize($file)) &&
    in_array($info[2], array(IMAGETYPE_JPEG, IMAGETYPE_GIF, IMAGETYPE_PNG)) )
    {
      $result = array('width' => $info[0], 'height' => $info[1], 'type' => $info[2], 'mime' => $info['mime']);
      cache_set($cache_key, $result);
      return $result;
    }
    return FALSE;
    }
  3. Clear caches on the Dev environment. The first action to populate cache will take longer than subsequent requests.

You can modify this patch according to your needs, such as performing an operation post upload and/or specifying a particular cache bin.


ImageAPI Optimize

Last reviewed: Oct 17 2019

Issue: ImageAPI Optimize supports 3rd-party libraries such as advpng, OptiPNG, PNGCRUSH, jpegtran, jfifremove, advdef, pngout, jpegoptim. These libraries have to be installed on the server. At this time, they are not supported.

Solution: Use a 3rd-party module like reSmush.It or a local application like ImageOptim. or OptiPNG.


JS

Last reviewed: Feb 10 2020

Issue: This module requires modification of the site's .htaccess or nginx.conf file, which cannot be modified on the platform. While using settings.php can sometimes be effective as a means of implementing redirects, because POST data needs to be preserved, it is not possible to implement redirects at the application layer in a way that would allow this module to function as intended.


LiveReload

Issue: This module triggers heavy load on the application container as soon as it is enabled and causes pages to time out for anonymous users for Drupal.


Live CSS

Last reviewed: Feb 10 2020

Issue: This module requires write access to the site's codebase for editing CSS files, which is not granted on Test and Live environments by design.


Media: Browser Plus

Issue: This module requires the use of the /tmp directory. Refer to the Using the tmp Directory section below.


Node export webforms

Issue: This module requires the use of the tmp directory. Refer to the Using the tmp Directory section below.

Solution: Use drush, as this uses a single application container to process the export. The relevant drush command is webform-export (alias wfx).

Customers have also reported success by making the export path configurable.


Issue: Using Node Gallery with Plupload attaches cookies to image uploads for authentication purposes. This conflicts with our page cache configuration as we strip all cookies for images, CSS, and JS files to improve performance.


Pathologic

Last reviewed: Feb 10 2020

Issue: The path of the base URL is changed and cached by the module itself.

Solution: The documentation on Drupal.org for the module mentions the issues and the remedy, which is a cache clear operation. If you are unable to exclude cached data from your dumps or avoid migrating cache data, you should clear your site's cache after importing the data.

Additionally, Pathologic can cause the change of base URLs in a domain access configuration based on the value of $options['url'] in the site Drush config. This is set to the first domain listed on an environment by default on Pantheon, which can result in unexpected root domains being written to the cache. Refer to our Drush documentation for more information about overriding this value.

Persistent Login

Issue: This module attaches per-user cookies that conflict with our page cache configuration.

Solution: Follow the remedy provided within the module's documentation of the issue on Drupal.org, which is to alter the code to prefix the cookie name with SESS.


Plupload

Issue: Plupload requires the use of the /tmp directory. Refer to the Using the tmp Directory section below.

Solution: A possible solution is to set the plupload_temporary_uri variable in settings.php. Example:

setting.php
$conf['plupload_temporary_uri'] ='private://tmp';

Replica - Database Configuration

Last reviewed: Sep 28 2023

Issue: Pantheon's database replication architecture is incompatible with replica configurations for Drupal, as the application does not expect the replica to be readable during the bootstrap process and continues to query it instead of falling back to the main database. This issue is known to cause significant application problems when used on the platform.

Solution: Replica configuration is not supported or recommended on Pantheon and there is no known workaround at this time.


reCAPTCHA

Last reviewed: May 05 2020

Issue 1: If your site is running PHP 5.3, form submissions that use the reCAPTCHA module might continually fail and display the error: The answer you entered for the CAPTCHA was not correct. This is because the default arg_separator.output for PHP 5.3 is &amp; while for PHP 5.5 it is &.

Solution: Override the default arg_separator.output value in settings.php by adding the following line:

settings.php
ini_set('arg_separator.output', '&');

Issue 2: On non-live environments, reCAPTCHA returns the error, "ERROR for site owner: Invalid domain for site key."

Solution: Add more domains to your Google reCAPTCHA configuration. Add dev-<sitename>.pantheonsite.io and test-<sitename>.pantheonsite.io to the site. This is set in Google's reCAPTCHA admin panel.

Solution 2: Disable the reCAPTCHA on non-live environments. In Drupal, you can set the configuration key to be NULL in your settings.php file as follows:

settings.php
// Deactivate reCAPTCHA not running on the live site.
if (defined('PANTHEON_ENVIRONMENT') && $_ENV['PANTHEON_ENVIRONMENT'] != 'live') {
  $conf['recaptcha_site_key'] = NULL;
}

Issue 3: reCAPTCHA relies on $_SERVER['SERVER_NAME'] which is ephemeral on horizontally-scaled platforms like Pantheon. See SERVER_NAME and SERVER_PORT on Pantheon for details and workarounds.


S3 File System

Last reviewed: Dec 06 2019

Issue 1: When the module is configured to take over the public file system, Drupal's CSS/JS aggregation will not work unless you also upload Drupal Core and contrib modules to S3. See Drupal Issue 2511090 for more information.

Issue 2: Uploading files over 100MB through the Drupal file fields are still limited by the upload limitations.


Schema

Issue: The module doesn't work with the MySQL TIMESTAMP column type in our heartbeat table, which is part of how we maintain status around whether or not a site and its database is active. This is a known bug in the schema module.

Solution: Set a variable to suppress the error, shown here. Setting the variable schema_suppress_type_warnings to true will do it. You can achieve that by adding the following line to settings.php:

settings.php
$conf[‘schema_suppress_type_warnings’] = TRUE;

Search Api Solr Date Sort

Last reviewed: Mar 12 2020

Issue: This module overrides a class from the Pantheon Apache Solr module responsible for connecting to Pantheon's Apache Solr service. As a result, Solr connection is lost.

Solution: Instead of patching the module, you can fix the issue with a custom module:

  1. Define a new class that inherits from the PantheonApachesolrSearchApiSolrService and contains logic from the SearchApiSolrDateSortSolrService (or vice a versa). Refer to the module source code for examples.

  2. Implement the hook_search_api_service_info_alter() function in your custom module's .module file and add your class into a configuration array. Refer to the developer documentation for details. Ensure that your module's weight is gereater than that of search_api_solr_date and pantheon_apachesolr.


Simple OAuth / OAuth 2.0

Issue: The module requires a very specific set of permissions for the folder and the keys to be uploaded. Using Private or non-standard filepaths won't work. It is not possible to change these in LIVE or TEST environment.

Solution: You can try to patch the permission check in the module. The alternative is to use off-site key management tools like Lockr


Update Manager - Drupal 9 (core)

Last reviewed: Mar 17 2021

Issue: Sometimes, after a fresh system install, the Manage > Extend > + Install new module and Manage > Appearance > + Install new theme buttons are missing.

This is a known bug in Drupal 9. Refer to Issue #2350711 for more information.

Solution:

  1. Navigate to the Manage > Extend page at /admin/modules.
  2. Click the Uninstall tab, and uninstall the Update Manager module.
  3. Click the List tab and re-install the Update Manager.
  4. Clear the cache.

Varnish

Issue: Conflicts with the existing platform configuration.

Solution: Update Drupal performance settings to set the TTL and have the platform page cache serve requests. Refer to Pantheon's Global CDN documentation.


Views data export

Issue: This module requires the use of the /tmp directory. Refer to Using the tmp Directory below, for more information.

Solution: A possible solution would be to set the export directory in settings.php to a public:// stream wrapper location versus a temporary:// one. Example:

settings.php
$conf['views_data_export_directory'] = 'public://';

or to a specific directory:

settings.php
$conf['views_data_export_directory'] = 'public://vde/';

Additionally, the variable can be set using Drush:

drush vset views_data_export_directory 'public://'

Also refer to the Multiple Servers + Batch Database Stream Wrapper (sandbox module).


Using the tmp Directory

Issue: Extensions that require the use of the /tmp directory are not supported. With multiple application containers, as exists on Live environments, it's assumed the /tmp directory will be on the same application container. However, as we run a distributed application container matrix, the /tmp directory is not shared.

Solution: For more details, see Temporary File Management.

Other Issues

Modules will not work on Pantheon if they:

  • Require Apache.
  • Require customized .htaccess files.
  • Need to modify Nginx configuration files.
  • Require PostgreSQL or other non-MySQL compatible databases.