- [Are there any differences between Linux, Windows and OSX?](#are-there-any-differences-between-linux-windows-and-osx)
- [Why are mounted MySQL data directories separated by version?](#why-are-mounted-mysql-data-directories-separated-by-version)
- [Why are mounted PostgreSQL data directories separated by version?](#why-are-mounted-postgresql-data-directories-separated-by-version)
- [Why are mounted MongoDB data directories separated by version?](#why-are-mounted-mongodb-data-directories-separated-by-version)
- [Why do the user/group permissions of log/ or cfg/ directories show 1000?](#why-do-the-usergroup-permissions-of-log-or-cfg-directories-show-1000)
- [Can I not just comment out the service in the .env file?](#can-i-not-just-comment-out-the-service-in-the-env-file)
- [Are there any required services that must/will always be started?](#are-there-any-required-services-that-mustwill-always-be-started)
- [What PHP Modules are available?](#what-php-modules-are-available)
- [Can I load custom PHP modules without rebuilding the Docker container?](#can-i-load-custom-php-modules-without-rebuilding-the-docker-container)
2.**[Configuration](#2-configuration)**
- [Can I change the MySQL root password?](#can-i-change-the-mysql-root-password)
- [Can I add other PHP Modules?](#can-i-add-other-php-modules)
- [Can I change php.ini?](#can-i-change-phpini)
- [Can I change my.cnf?](#can-i-change-mycnf)
- [Can I switch HHVM between PHP 5.6 and PHP 7 mode?](#can-i-switch-hhvm-between-php-56-and-php-7-mode)
- [Can I change the project virtual host domain .loc?](#can-i-change-the-project-virtual-host-domain-loc)
- [Can I just start PHP and MySQL instead of all container?](#can-i-just-start-php-and-mysql-instead-of-all-container)
- [Do I always have to edit /etc/hosts for new projects?](#do-i-always-have-to-edit-etchosts-for-new-projects)
3.**[Usage](#3-usage)**
- [Does it work with CakePHP?](#does-it-work-with-cakephp)
- [Does it work with Drupal?](#does-it-work-with-drupal)
- [Does it work with Laravel?](#does-it-work-with-laravel)
- [Does it work with PhalconPHP?](#does-it-work-with-phalconphp)
- [Does it work with Symfony?](#does-it-work-with-symfony)
- [Does it work with Wordpress?](#does-it-work-with-wordpress)
- [Does it work with Yii?](#does-it-work-with-yii)
- [Does it work with Zend Framework?](#does-it-work-with-zend-framework)
4.**[Troubleshooting](#4-troubleshooting)**
- [Invalid bind mount spec after changing the path of MySQL, PgSQL, Mongo or the Data dir.](#invalid-bind-mount-spec-after-changing-the-path-of-mysql-pgsql-mongo-or-the-data-dir)
This is just a pre-caution. Imagine they would link to the same datadir. You start the devilbox with mysql 5.5, create a database and add some data. Now you decide to switch to mysql 5.7 and restart the devilbox. The newer mysql version will probably upgrade the data leaving it unable to start with older mysql versions.
Uid and Gid are set to 1000 by default. You can alter them to match the uid/gid of your current user. Open the `.env` file and change the sections `NEW_UID` and `NEW_GID`. When you start up the devilbox, the php-container will use these values for its user.
The devilbox is a development stack, so it is made sure that a lot of PHP modules are available out of the box in order to work with many different frameworks.
There will however be slight differences between the versions and especially with HHVM. To see the exact bundled modules for each version visit the corresponding docker repositories on Github:
#### Can I load custom PHP modules without rebuilding the Docker container?
Yes. You can load custom PHP modules for each PHP version separately. See [Custom PHP Modules](Configure.md#425-custom-php-modules) in the Configuration documentation.
Yes, you can change the password of the MySQL root user. If you do so, you must also set the new password in your `.env` file. See **[Configure](Configure.md)** for how to change the values.
Yes, if there are any PHP modules you require that are not yet available in the PHP Docker container, you can install it during run-time, or create your own container. See **[Hacking](Hacking.md)** for more information.
Yes, php.ini directives can be changes on a per PHP version base. Go to `./cfg/` inside devilbox git diretory. There you will find configuration directories for each php version. Just put a \*.ini file there and restart the devilbox.
Yes, my.cnf directives can be changes on a per MySQL version base. Go to `./cfg/` inside devilbox git diretory. There you will find configuration directories for each MySQL version. Just put a \*.cnf file there and restart the devilbox.
Yes, every Docker container is optional. The devilbox allows for selective startup. See **[Run: selective start](Run.md#13-selective-start)** for more detail.
You need a valid DNS entry for every project that points to the Httpd server. As those records don't exists by default, you will have to create them. However, the devilbox has a bundled DNS server that can automate this for you. The only thing you have to do for that to work is to add this DNS server's IP address to your `/etc/resolv.conf`. See **[Configure: AutoDNS](Configure.md#62-auto-dns)** for instructions.
When you change any paths inside `.env` that affect Docker mountpoints, the container need to be *removed* and re-created during the next startup. *Removing* the container is sufficient as they will always be created during run if they don't exist.
In order to *remove* the container do the following:
```shell
$ docker-compose stop
# Remove the stopped container (IMPORTANT!)
# After the removal it will be re-created during next run