Differences between Production and Development environments
Back to home
On this page
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 | 8.2 | 8.3 |
---|---|---|---|---|---|---|---|---|---|
amqp |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
apcu |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
apcu-bc |
✅ | ✅ | ✅ | ✅ | ✅ | ||||
bcmath |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
bz2 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
cgi |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
cli |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
common |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
curl |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
dba |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
dev |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
enchant |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
event |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
fpm |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
gd |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
geoip |
✅ | ✅ | ✅ | ✅ | ✅ | ||||
gmp |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
igbinary |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
imagick |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
imap |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
interbase |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
intl |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
json |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
ldap |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
mailparse |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
mbstring |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
mcrypt |
✅ | ✅ | |||||||
memcached |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
mongodb |
✅ | ✅ | ✅ | ✅ | ✅ | ||||
msgpack |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
mysql |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
oauth |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
odbc |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
opcache |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
openswoole |
✅ | ✅ | |||||||
pdo-sqlsrv |
✅ | ✅ | ✅ | ✅ | |||||
pgsql |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
phpdbg |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
pspell |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
readline |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
recode |
✅ | ✅ | ✅ | ||||||
redis |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
snmp |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
soap |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
sodium |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
sqlite3 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
sqlsrv |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
ssh2 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
swoole |
✅ | ✅ | |||||||
sybase |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tideways-xhprof |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
tidy |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
twig |
✅ | ||||||||
uuid |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||
xcache |
✅ | ||||||||
xdebug |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
xml |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
xmlrpc |
✅ | ✅ | ✅ | ✅ | |||||
xsl |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
zbarcode |
✅ | ✅ | ✅ | ||||||
zip |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
zts |
✅ | ✅ | ✅ | ✅ | ✅ |
Configuration options
Note
Most Dedicated Gen 2 projects allow you to use custom php.ini
files on your Production/Staging environments.
However, for a small set of projects, this isn’t supported yet.
If your project doesn’t support PHP configuration through a php.ini
file,
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:
- Worker instances
- Service configuration
- Relationships among services and apps
- Plan upsizing
- Increasing storage
- Allocating storage among mounts and services
- PHP extensions
- Web server configuration (the
web.locations
section of your app configuration)
Logs
Dedicated Gen 2 environments have a slightly different location for container logs. The difference shouldn’t be noticeable if you use the CLI.