Differences between Production and Development environments

With Dedicated Gen 2 plans, your Production and Staging environments are dedicated virtual machines, while your Development environments run on the Grid, meaning shared redundant infrastructure. This difference means a few configuration options and tools function differently in the different environments.

These differences should be gone with Dedicated Gen 3.

Syncing data between environments 

Because of the differences between Dedicated Gen 2 and Grid environments, basic syncs and merges aren’t available between Development environments and Production/Staging environments. So you don’t see working buttons with those options in the Console.

To transfer data between environments, backup your Production/Staging data and then synchronize Development data. See how to back up and transfer data.

Backups 

Production environments are backed up automatically. For other environments, trigger a manual backup.

PHP 

Extensions 

The following table shows all of the extensions that are enabled by default in each PHP version. To add any other extension with a pre-existing package in the Debian Apt repository, open a support ticket.

Extension 5.x 7.0 7.1 7.2-7.3 7.4 8.0 8.1
amqp โœ… โœ… โœ… โœ… โœ…
apcu โœ… โœ… โœ… โœ… โœ… โœ… โœ…
apcu-bc โœ… โœ… โœ… โœ…
bcmath โœ… โœ… โœ… โœ… โœ… โœ…
bz2 โœ… โœ… โœ… โœ… โœ… โœ…
cgi โœ… โœ… โœ… โœ… โœ…
cli โœ… โœ… โœ… โœ… โœ… โœ… โœ…
common โœ… โœ… โœ… โœ… โœ…
curl โœ… โœ… โœ… โœ… โœ… โœ… โœ…
dba โœ… โœ… โœ… โœ… โœ… โœ…
dbg โœ…
dev โœ… โœ… โœ… โœ… โœ…
enchant โœ… โœ… โœ… โœ… โœ… โœ…
event โœ… โœ… โœ… โœ… โœ…
fpm โœ… โœ… โœ… โœ… โœ… โœ… โœ…
gd โœ… โœ… โœ… โœ… โœ… โœ… โœ…
geoip โœ… โœ… โœ… โœ… โœ… โœ…
gmp โœ… โœ… โœ… โœ… โœ… โœ…
igbinary โœ… โœ… โœ… โœ… โœ… โœ… โœ…
imagick โœ… โœ… โœ… โœ… โœ… โœ… โœ…
imap โœ… โœ… โœ… โœ… โœ… โœ…
interbase โœ… โœ… โœ… โœ… โœ…
intl โœ… โœ… โœ… โœ… โœ… โœ… โœ…
json โœ… โœ… โœ… โœ… โœ… โœ…
ldap โœ… โœ… โœ… โœ… โœ… โœ… โœ…
mailparse โœ… โœ… โœ… โœ… โœ…
mbstring โœ… โœ… โœ… โœ… โœ… โœ…
mcrypt โœ… โœ… โœ…
memcached โœ… โœ… โœ… โœ… โœ… โœ…
mongo โœ…
mongodb โœ… โœ… โœ… โœ… โœ…
msgpack โœ… โœ… โœ… โœ… โœ…
mysql โœ… โœ… โœ… โœ… โœ… โœ… โœ…
mysqlnd โœ…
oauth โœ… โœ… โœ… โœ… โœ… โœ… โœ…
odbc โœ… โœ… โœ… โœ… โœ… โœ…
opcache โœ… โœ… โœ… โœ… โœ… โœ…
pdo-sqlsrv โœ… โœ… โœ… โœ… โœ… โœ…
pgsql โœ… โœ… โœ… โœ… โœ… โœ… โœ…
phpdbg โœ… โœ… โœ… โœ… โœ… โœ…
pspell โœ… โœ… โœ… โœ… โœ… โœ…
readline โœ… โœ… โœ… โœ… โœ… โœ…
recode โœ… โœ… โœ…
redis โœ… โœ… โœ… โœ… โœ… โœ… โœ…
snmp โœ… โœ… โœ… โœ… โœ… โœ…
soap โœ… โœ… โœ… โœ… โœ… โœ…
sodium โœ… โœ… โœ… โœ…
sqlite3 โœ… โœ… โœ… โœ… โœ… โœ…
sqlsrv โœ… โœ… โœ… โœ… โœ… โœ…
ssh2 โœ… โœ… โœ… โœ… โœ… โœ… โœ…
sybase โœ… โœ… โœ… โœ… โœ… โœ…
tideways-xhprof โœ… โœ… โœ… โœ… โœ…
tidy โœ… โœ… โœ… โœ… โœ… โœ…
twig โœ…
uuid โœ… โœ… โœ… โœ… โœ…
xcache โœ…
xdebug โœ… โœ… โœ… โœ… โœ… โœ… โœ…
xhprof โœ…
xml โœ… โœ… โœ… โœ… โœ… โœ…
xmlrpc โœ… โœ… โœ… โœ… โœ…
xsl โœ… โœ… โœ… โœ… โœ… โœ…
zbarcode โœ… โœ… โœ…
zip โœ… โœ… โœ… โœ… โœ… โœ…
zts โœ… โœ… โœ… โœ… โœ…

Configuration options 

You can’t use custom php.ini files on your Production/Staging environments. You can still change all PHP options that can be changed at runtime. For example, change the memory limit using ini_set('memory_limit','1024M');

For other PHP options, such as the following, open a support ticket:

  • max_execution_time
  • max_input_time
  • max_input_vars
  • memory_limit
  • post_max_size
  • request_order
  • upload_max_filesize

Xdebug 

All Dedicated Gen 2 clusters that have Xdebug enabled have a second PHP-FPM process. This second process is used only when requests include the correct Xdebug key in a header. So you can keep Xdebug always on and not worry about performance issues as it’s ignored on most requests.

To obtain the key, open a support ticket. Staging and Production environments have separate keys. Set that key in the Xdebug helper for your browser. Then whenever you have Xdebug enabled, the request uses the alternate development PHP-FPM process with Xdebug.

Solr 

On Grid environments, Solr runs as a standalone instance. On Dedicated Gen 2 environments, it runs as SolrCloud: a cluster of Solr servers to ensure high availability. This shouldn’t affect you most of the time, but may influence certain advanced use cases.

Cron tasks interrupted by deploys 

How cron tasks interact with deploys changes based on the environment.

On Grid environments, a running cron task blocks a deploy until the cron is complete. On Dedicated Gen 2 environments, a deploy terminates a running cron task.

Specifically, when a deploy to either Production or Staging begins, any active cron tasks are sent a SIGTERM message so that they can terminate gracefully. If they’re still running 2 seconds later, a SIGKILL message is sent to forcibly terminate the process.

So it’s best to ensure your cron tasks can receive a SIGTERM message and terminate gracefully.

Configuration & change management 

You can’t manage some configuration settings via YAML configuration files on Dedicated Gen 2 environments. In these cases, you need to open a support ticket. You can have some settings different between Staging and Production environments. It’s assumed you want the settings the same, unless you state otherwise in the ticket.

The following settings require a support ticket:

Logs 

Dedicated Gen 2 environments have a slightly different location for container logs. The difference shouldn’t be noticeable if you use the CLI.