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:
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.
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:
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.)
Edit
imce/inc/imce.page.inc
and replace the contents ofimce_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; }
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.
Ludwig
Last reviewed: Apr 18 2024
Issue: Ludwig expects write access to the site's codebase via SFTP, which is prevented in Test and Live environments on Pantheon by design.
Solution: As covered by the module's project page, Composer managed Drupal sites should not use Ludwig. See also, this discussion regarding Ludwig EOL.
Media: Browser Plus
Issue: This module requires the use of the /tmp
directory. Refer to the Using the tmp Directory section below.
Media Bulk Upload
Last reviewed: Jun 24 2024
Issue: The default configuration for this module has been known to cause issues related to the "Upload location" setting, which out of the box uses the /tmp
directory.
Solution: Configure the "Upload location" to public://sites/default/files/private
You must include the public://
protocol for this solution to work.
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.
Node Gallery
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:
$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 &
while for PHP 5.5 it is &
.
Solution: Override the default arg_separator.output value in settings.php
by adding the following line:
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:
// 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
:
$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:
Define a new class that inherits from the
PantheonApachesolrSearchApiSolrService
and contains logic from theSearchApiSolrDateSortSolrService
(or vice a versa). Refer to the module source code for examples.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 ofsearch_api_solr_date
andpantheon_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:
- Navigate to the Manage > Extend page at
/admin/modules
. - Click the Uninstall tab, and uninstall the Update Manager module.
- Click the List tab and re-install the Update Manager.
- 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:
$conf['views_data_export_directory'] = 'public://';
or to a specific directory:
$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.