Deprecated: Creation of dynamic property Mail_Mbox::$_file is deprecated in /var/www/default/include/vendor/Mail/Mbox.php on line 204
What went wrong?
When browsing e-mails via http://localhost/mail.php I can see a list of captured e-mails but not the body.
In Firefox Network panel, I can see that an AJAX call returned the following PHP error message, instead of JSON.
Deprecated: Creation of dynamic property Mail_Mbox::$_file is deprecated in /var/www/default/include/vendor/Mail/Mbox.php on line 204
This error message however, is probably only a peak of an iceberg. When I create the _file property, no mail body is returned anyway, with no further errors.
Use a PHP script to send an e-mail via built-in mail() funcion.
Go to Devilbox / Dashboard / E-mails
Click the row with the captured e-mail to attempt to see its body.
Host Operating System
Linux
Host Platform (amd64, arm64, other)
amd64
(Linux only) Is SELinux enabled?
I don't know
Docker version
Docker version 24.0.7, build 24.0.7-0ubuntu2~22.04.1
Docker Compose version
Docker Compose version v2.29.1
Devilbox version
3.0.0-beta-0.3 (2022-01-02)
Have you removed stopped containers before starting?
Yes
Have you pulled latest Docker images before starting?
Yes
Devilbox start command
docker compose up -d php52 httpd mysql
Config: .env file
###
### ---------------------------------------------------
### D E V I L B O X R U N - T I M E S E T T I N G S
### ---------------------------------------------------
###
### All the following settings are applied during
### $ docker-compose up
###
### No need to rebuild any docker images!
###
### IMPORTANT:
### ----------
### When changing any values ensure to stop, rm and restart:
### $ docker-compose stop
### $ docker-compose rm -f
### $ docker-compose up
###
### NOTE:
### -----
### For you own custom variables, scroll to the bottom
###
# The following line will disable any shellcheck warnings throughout this file
# shellcheck disable=SC2034,SC2125
###
### Show all executed commands in each
### docker image during docker-compose up?
###
### 0: Errors
### 1: Errors, Warnings
### 2: Errors, Warnings, Infos (Recommended)
### 3: Errors, Warnings, Infos, Debug
### 4: Errors, Warnings, Infos, Debug, Trace
DEBUG_ENTRYPOINT=2
###
### Log to file or Docker logs.
###
### Logging to file means log files are available under log/
### on your host operating system.
### Logging to Docker logs means log files are streamed to
### stdout and stderr.
###
### 1: Log to Docker logs
### 0: Log to file
###
DOCKER_LOGS=0
###
### Relative or absolute path to the devilbox repository.
### (Used as a prefix for all mount paths)
### There is no need to change this.
###
### The only exception is for OSX users wanting to use NFS
### mounts instead of Filesystem mounts due to degraded performance
### on OSX.
###
### Note: When changing this variable you must re-create the container.
### Simply remove it, it will be auto-created during the next start:
###
### $ docker-compose rm -f
###
DEVILBOX_PATH=.
###
### At what IP address should the docker services listen
### on the Host computer?
###
### The specified default should be fine for Linux and OSX (127.0.0.1:).
### If you are on windows, you will probably have to change
### it to the IP address of the docker machine.
###
### a.) Leave blank, to listen on all interfaces (no trailing colon ':')
### LOCAL_LISTEN_ADDR=
### b.) If an IP is specified, note the trailing colon ':'
### LOCAL_LISTEN_ADDR=127.0.0.1:
###
LOCAL_LISTEN_ADDR=
###
### This is the domain suffix your projects will be made available
### with mass-virtual-hosting.
### It is also required for the internal DNS server to be setup.
###
### Note: In addition to period or dot character ('.'), only ALPHA ([a-zA-Z]+) characters are supported.
### Mac users should not use the .local TLD, as this will not resolve properly due Apple's
### use of Multicast DNS.
###
### Note: If you use 'dvl.to' then there is no need for additional DNS as this always points
### to 127.0.0.1 by default.
###
### Example:
### TLD_SUFFIX=loc
### Makes your project available under <project>.loc
###
### Example:
### TLD_SUFFIX=local
### Makes your project available under <project>.local
###
TLD_SUFFIX=local
###
### Optional DNS configuration
### Allows you to add extra DNS records (above the wildcard entry)
### Useful if your host computer run other Docker services that you want to connect to or reach
### from within the Devilbox network by a custom hostname.
###
### Format:
### -------
### Resolve any custom defined hostname to an IP address (useable inside container and host os)
### EXTRA_HOSTS=<hostname>=<ip>[,<hostname>=<ip>]
###
### Resolve any custom defined hostname to whatever IP address a CNAME resolves to
### (Useable inside the container and host OS).
### Note: CNAME must be resolvable by Google DNS
### EXTRA_HOSTS=<hostname>=<CNAME>[,<hostname>=<CNAME>]
###
### Examples:
### ---------
### EXTRA_HOSTS=hostname.loc=1.2.3.4
### EXTRA_HOSTS=host.loc=1.2.3.4,host.example.org=3.4.5.6
EXTRA_HOSTS=
###
### Set your user id and group id
###
### This should be changed to the value of your local
### users uid and gid
###
### Type `id` on the terminal to find out your values
###
NEW_UID=1000
NEW_GID=1000
###
### Timezone for PHP Docker container (system and php.ini)
###
TIMEZONE=Europe/Prague
################################################################################
###
### INTRANET SETTINGS
###
################################################################################
###
### TLD_SUFFIX domains are checked if they are set in the
### host computer /etc/hosts or available via attached DNS server.
### Timeout is done on vhosts.php (intranet) via ajax calls.
### In order to keep performance, set this to a low value.
### DNS checks might not succeed in time on slow machines.
### If DNS is valid, but timeout is expired, set this to a higher value.
###
### DNS_CHECK_TIMEOUT value is how many seconds to time out
### Default is to timeout after 1 second (DNS_CHECK_TIMEOUT=1)
###
DNS_CHECK_TIMEOUT=1
###
### Devilbox UI SSL Certificate generation
###
### When using SSL each certificate requires names for which it is responsible:
### Common Name as well as alternative names.
###
### Specify comma separated hostnames below by which you want to access the Devilbox.
### Those hostnames will be included in the SSL certificate for the Devilbox intranet.
### This has nothing to do for SSL certificates for projects, it is just for the intranet
### itself.
###
DEVILBOX_UI_SSL_CN=localhost,*.localhost,devilbox,*.devilbox,httpd
###
### Devilbox UI Password protection enable/disable (1/0)
###
### Set DEVILBOX_UI_PROTECT to 1 in order to password protect the
### intranet.
###
### Example:
### DEVILBOX_UI_PROTECT=1
### DEVILBOX_UI_PROTECT=0
###
DEVILBOX_UI_PROTECT=1
###
### Devilbox UI Password
###
### When DEVILBOX_UI_PROTECT=1, use the following password
### to log in. The password can always be changed.
### When changing the password, make sure to restart your
### PHP container.
###
### Example:
### DEVILBOX_UI_PASSWORD=my-very-secure-password
### DEVILBOX_UI_PASSWORD=Some pass with spaces
###
### The default username is 'devilbox'
###
DEVILBOX_UI_PASSWORD=asdf
###
### Enable the Devilbox Intranet?
###
### Example:
### DEVILBOX_UI_ENABLE=1
### DEVILBOX_UI_ENABLE=0
###
DEVILBOX_UI_ENABLE=1
###
### Automatically be logged in into phpMyAdmin
###
### Example:
### DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN=1
### DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN=0
###
DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN=1
###
### Automatically be logged in into phpPgAdmin
###
### Example:
### DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN=1
### DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN=0
###
DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN=1
###
### HTTPD Supvervisord management
###
DEVILBOX_HTTPD_MGMT_USER=supervisord
DEVILBOX_HTTPD_MGMT_PASS=mypassword
################################################################################
###
### 1. Choose Images (Version)
###
################################################################################
###
### You can choose any combination of httpd, mysql, postgresql or php.
### Each of them are fully compatible between one another.
###
###
### 1.1 Choose PHP Server Image
###
### Note: PHP 5.2 is not officially supported. Intranet won't work (due to lack of namespace support).
### PHP 5.2 only works with Apache 2.4, Nginx stable and Nginx mainline.
### Use at your own risk.
###
#PHP_SERVER=5.2
#PHP_SERVER=5.3
#PHP_SERVER=5.4
#PHP_SERVER=5.5
#PHP_SERVER=5.6
#PHP_SERVER=7.0
#PHP_SERVER=7.1
#PHP_SERVER=7.2
#PHP_SERVER=7.3
#PHP_SERVER=7.4
#PHP_SERVER=8.0
#PHP_SERVER=8.1
PHP_SERVER=8.2
###
### 1.2 Choose HTTPD Server Image
###
### Choose between 'debian' or 'alpine' flavour and then select the version
###
### Note: apache-2.2 has no arm64 support on 'alpine' flavour
###
HTTPD_FLAVOUR=alpine
#HTTPD_SERVER=apache-2.2
HTTPD_SERVER=apache-2.4
#HTTPD_SERVER=nginx-stable
#HTTPD_SERVER=nginx-mainline
###
### 1.3 Choose MySQL Server Image
###
#MYSQL_SERVER=mysql-5.5
#MYSQL_SERVER=mysql-5.6
MYSQL_SERVER=mysql-5.7
#MYSQL_SERVER=mysql-8.0
#MYSQL_SERVER=percona-5.5
#MYSQL_SERVER=percona-5.6
#MYSQL_SERVER=percona-5.7
#MYSQL_SERVER=percona-8.0
#MYSQL_SERVER=mariadb-5.5
#MYSQL_SERVER=mariadb-10.0
#MYSQL_SERVER=mariadb-10.1
#MYSQL_SERVER=mariadb-10.2
#MYSQL_SERVER=mariadb-10.3
#MYSQL_SERVER=mariadb-10.4
#MYSQL_SERVER=mariadb-10.5
#MYSQL_SERVER=mariadb-10.6
#MYSQL_SERVER=mariadb-10.7
#MYSQL_SERVER=mariadb-10.8
#MYSQL_SERVER=mariadb-10.9
#MYSQL_SERVER=mariadb-10.10
###
### 1.4 Choose PostgreSQL Server Image
###
### https://www.postgresql.org/support/versioning/
###
### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX
### https://github.com/docker/toolbox/issues/510
###
#
# PostgreSQL without arm64 support
#
PGSQL_SERVER=9.0
#PGSQL_SERVER=9.1
#PGSQL_SERVER=9.2-alpine
#
# PostgreSQL with arm64 support
#
#PGSQL_SERVER=9.2
#PGSQL_SERVER=9.3
#PGSQL_SERVER=9.3-alpine
#PGSQL_SERVER=9.4
#PGSQL_SERVER=9.4-alpine
#PGSQL_SERVER=9.5
#PGSQL_SERVER=9.5-alpine
#PGSQL_SERVER=9.6
#PGSQL_SERVER=9.6-alpine
#PGSQL_SERVER=10
#PGSQL_SERVER=10-alpine
#PGSQL_SERVER=11
#PGSQL_SERVER=11-alpine
#PGSQL_SERVER=12
#PGSQL_SERVER=12-alpine
#PGSQL_SERVER=13
#PGSQL_SERVER=13-alpine
#PGSQL_SERVER=14
#PGSQL_SERVER=14-alpine
#PGSQL_SERVER=15
#PGSQL_SERVER=15-alpine
#PGSQL_SERVER=latest
#PGSQL_SERVER=alpine
###
### 1.5 Choose Redis Server Image
###
### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX
### https://github.com/docker/toolbox/issues/510
###
#
# Redis without arm64 support
#
REDIS_SERVER=2.8
#REDIS_SERVER=3.0
#REDIS_SERVER=3.0-alpine
#
# Redis with arm64 support
#
#REDIS_SERVER=3.2
#REDIS_SERVER=3.2-alpine
#REDIS_SERVER=4.0
#REDIS_SERVER=4.0-alpine
#REDIS_SERVER=5.0
#REDIS_SERVER=5.0-alpine
#REDIS_SERVER=6.0
#REDIS_SERVER=6.0-alpine
#REDIS_SERVER=6.2
#REDIS_SERVER=6.2-alpine
#REDIS_SERVER=7.0
#REDIS_SERVER=7.0-alpine
#REDIS_SERVER=latest
#REDIS_SERVER=alpine
###
### 1.6 Choose Memcached Server Image
###
### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX
### https://github.com/docker/toolbox/issues/510
###
#
# Memcached without arm64 support
#
MEMCD_SERVER=1.4
#MEMCD_SERVER=1.4-alpine
#
# Memcached with arm64 support
#
#MEMCD_SERVER=1.5
#MEMCD_SERVER=1.5-alpine
#MEMCD_SERVER=1.6
#MEMCD_SERVER=1.6-alpine
#MEMCD_SERVER=latest
#MEMCD_SERVER=alpine
###
### 1.7 Choose Mongo Server Image
###
### https://www.mongodb.com/evolved
###
#
# MongoDB without arm64 support
#
MONGO_SERVER=2.8
#MONGO_SERVER=3.0
#MONGO_SERVER=3.2
#
# MongoDB with arm64 support
#
#MONGO_SERVER=3.4
#MONGO_SERVER=3.6
#MONGO_SERVER=4.0
#MONGO_SERVER=4.2
#MONGO_SERVER=4.4
#MONGO_SERVER=5.0
#MONGO_SERVER=latest
################################################################################
###
### 2. Host Mounts (Your computer)
###
################################################################################
###
### Global mount options
###
### Note: When adding custom mount options, ensure to start with a
### leading ',' (comma), as those options are prepended to already
### existing mount options.
###
### Note: If no mount options are specified, leave this variable empty
### and do not add a leading ',' (comma).
###
### MOUNT_OPTIONS=,cached
### MOUNT_OPTIONS=
###
### Example: Allow to share mounts accross container with SELINUX enabled
###
### MOUNT_OPTIONS=,z
###
MOUNT_OPTIONS=
###
### Local filesystem path to www projects.
###
### Note: When changing this variable you must re-create the container.
### Simply remove it, it will be auto-created during the next start:
###
### $ docker-compose rm -f
###
HOST_PATH_HTTPD_DATADIR=./data/www
###
### Local filesystem path to where your backups are stored
###
### Note: When changing this variable you must re-create the container.
### Simply remove it, it will be auto-created during the next start:
###
### $ docker-compose rm -f
###
HOST_PATH_BACKUPDIR=./backups
###
### The path on your host OS of the ssh directory to be mounted into the
### PHP container into /home/devilbox/.ssh.
###
### IMPORTANT: The path is mounted read-only to ensure you cannot accidentally
## delete anything inside the php container.
###
HOST_PATH_SSH_DIR=~/.ssh
################################################################################
###
### 3. PHP Docker Settings
###
################################################################################
###
### Enable certain PHP modules which are not enabled by default
###
### Currently the only modules that can be enabled are 'ioncube' and 'blackfire'
### Also ensure to disable xdebug when using any of the above:
### https://xdebug.org/docs/install#compat
###
### PHP_MODULES_ENABLE=ioncube, blackfire
###
PHP_MODULES_ENABLE=
###
### Disable any PHP modules that you don't require
###
### Specify a comma separated list without spaces of modules to disable
###
### PHP_MODULES_DISABLE=xdebug,imagick,swoole
###
PHP_MODULES_DISABLE=oci8,PDO_OCI,pdo_sqlsrv,sqlsrv,rdkafka,swoole,psr,phalcon
###
### Postfix settings for email catch-all
###
### When set to '1' postfix is normally started and made available. However you still need
### to configure it to your needs yourself. For that you can use the autostart scripts
### and define a couple of 'postconf -e name=value' commands.
###
### When set to '2' (email catch-all), no mail will leave the Devilbox. It is automatically
### internally routed the the devilbox mail account and you can see each sent mail
### in the bundled intranet: https://localhost/mail.php
###
### Values:
### 0: Disable postfix (do not start it)
### 1: Enable/Start postfix
### 2: Enable/Start postfix and enable email catch-all
###
PHP_MAIL_CATCH_ALL=2
###
### Configure everything else about PHP in
### * cfg/php-ini-X.X/*.ini
### * cfg/php-fpm-X.X/*.conf
################################################################################
###
### 4. HTTPD Docker Settings
###
################################################################################
###
### Expose HTTPD Port to Host
###
HOST_PORT_HTTPD=80
HOST_PORT_HTTPD_SSL=443
###
### Globally enable/disable HTTP/2 support
###
### This cannot be done on a per vhost level and must be enabled/disabled globally.
###
### Values:
### * 0: HTTP/2 is disabled
### * 1: HTTP/2 is enabled
###
HTTPD_HTTP2_ENABLE=1
###
### SSL (HTTP/HTTPS) settings for automated vhost generation
###
### By default each project will have two vhosts (one for HTTP and one for HTTPS).
### You can control the SSL settings for your projects via the below stated values.
###
### This is internally achieved via the '-m' argument of https://github.com/devilbox/vhost-gen
###
### Values:
### * both: Serve HTTP and HTTPS for all projects
### * redir: HTTP always redirects to HTTPS
### * ssl: Only serve HTTPS
### * plain: Only serve HTTP
###
HTTPD_VHOST_SSL_TYPE=plain
###
### Document Root Subdirectory
###
### In your project directory, which subfolder should
### serve your files?
###
### When changing this value, restart the devilbox.
###
HTTPD_DOCROOT_DIR=htdocs
###
### Per vHost Config Subdirectory
###
### In your project directory, which subfolder should
### hold apache, nginx templates for a customized vhost?
###
### When changing this value, restart the devilbox.
###
HTTPD_TEMPLATE_DIR=.devilbox
###
### Remote (Upstream) Backend Timeout
###
### This setting specifies the Timeout for a remote Backend server,
### such as PHP-FPM or a Reverse Proxy.
###
### As for PHP, keep in mind that this value should be greater than
### PHP's max_execution_time,otherwise the php script could still
### run and the webserver will simply drop the connection before getting an answer by PHP.
###
HTTPD_BACKEND_TIMEOUT=180
###
### NGINX ONLY
###
### Set worker_processes and worker_connections
###
### https://nginx.org/en/docs/ngx_core_module.html#worker_processes
### https://nginx.org/en/docs/ngx_core_module.html#worker_connections
###
HTTPD_NGINX_WORKER_PROCESSES=auto
HTTPD_NGINX_WORKER_CONNECTIONS=1024
################################################################################
###
### 5. MySQL Docker Settings
###
################################################################################
###
### MySQL root user password
###
### The password is required for the initial creation of the MySQL database
### as well as the Devilbox intranet to display schema and configuration settings.
###
### If you change your MySQL root user password via mysql cli, phpMyAdmin or other tools
### after the database has been created, ensure to adjust the value here accordingly as well.
###
### If you only change this value here after the database has been created,
### the MySQL root user password will not actually be changed and the Devilbox intranet
### won't be able to connect to the MySQL service.
###
MYSQL_ROOT_PASSWORD=asdf
###
### Expose MySQL Port to Host
###
HOST_PORT_MYSQL=3306
################################################################################
###
### 6. PostgreSQL Docker Settings
###
################################################################################
###
### PostgreSQL 'root' user name (usually postgres)
###
PGSQL_ROOT_USER=postgres
###
### PostgreSQL 'root' user password
###
### If you want to set a password, ensure to remove 'trust' from
### PGSQL_HOST_AUTH_METHOD below
###
PGSQL_ROOT_PASSWORD=
###
### In order to not use a password for PostgreSQL, keep this value at 'trust'
###
PGSQL_HOST_AUTH_METHOD=trust
###
### Expose PostgreSQL Port to Host
###
HOST_PORT_PGSQL=5432
################################################################################
###
### 7. Redis Docker Settings
###
################################################################################
###
### Expose Redis Port to Host
###
HOST_PORT_REDIS=6379
###
### Custom startup arguments
###
### Apply custom startup arguments to redis
###
### Example: Password protection
### Add password protection to the Redis server by specifying it should
### require a password.
### Note: Do not add quotes or spaces to the password
###
### REDIS_ARGS=--requirepass my-redis-root-password
###
### Example: Verbosity
###
### REDIS_ARGS=--loglevel verbose
###
REDIS_ARGS=
#REDIS_ARGS=--loglevel verbose --requirepass my-redis-root-password
################################################################################
###
### 8. Memcached Docker Settings
###
################################################################################
###
### Expose Memcached Port to Host
###
HOST_PORT_MEMCD=11211
################################################################################
###
### 9. MongoDB Docker Settings
###
################################################################################
###
### Expose MongoDB Port to Host
###
HOST_PORT_MONGO=27017
################################################################################
###
### 10. Bind Docker Settings
###
################################################################################
###
### Expose Bind Port to Host
###
HOST_PORT_BIND=1053
###
### Add comma separated DNS server from which you want to receive DNS
### You can also add DNS servers from your LAN (if any are available)
###
BIND_DNS_RESOLVER=8.8.8.8,8.8.4.4
###
### Validate DNSSEC
###
### Values:
### no: DNSSEC validation is disabled
### yes: DNSSEC validation is enabled, but a trust anchor must be manually configured.
### auto: DNSSEC validation is enabled, and a default trust anchor for root zone is used.
###
BIND_DNSSEC_VALIDATE=no
###
### Bind timing options (time in seconds)
###
### Leave empty for defaults.
### Only change when you know what you are doing.
###
BIND_TTL_TIME=
BIND_REFRESH_TIME=
BIND_RETRY_TIME=
BIND_EXPIRY_TIME=
BIND_MAX_CACHE_TIME=
###
### Show DNS Queries in Docker logs output?
###
### 1: Yes
### 0: No
BIND_LOG_DNS_QUERIES=0
################################################################################
###
### 11. Custom variables
###
################################################################################
###
### Any variable defined in this file will be available
### as environment variables to your PHP/HHV Docker container.
###
### This might be useful to set application environment and retrieve
### them via: <?php getenv('MY_APPLICATION_ENV'); ?>
###
###
### Example:
### <?php echo getenv('Foo'); ?> would produce: 'some value'
###
#Foo=some value
Have you already looked into this bug?
(Optional) Error message
Deprecated: Creation of dynamic property Mail_Mbox::$_file is deprecated in /var/www/default/include/vendor/Mail/Mbox.php on line 204
What went wrong?
When browsing e-mails via http://localhost/mail.php I can see a list of captured e-mails but not the body.
In Firefox Network panel, I can see that an AJAX call returned the following PHP error message, instead of JSON. Deprecated: Creation of dynamic property Mail_Mbox::$_file is deprecated in /var/www/default/include/vendor/Mail/Mbox.php on line 204
This error message however, is probably only a peak of an iceberg. When I create the _file property, no mail body is returned anyway, with no further errors.
The latest version of this PEAR package is from 2009 https://pear.php.net/package/Mail_Mbox/
Expected behaviour
To be able to read the captured e-mail's body.
How can we reproduce the bug?
PHP_MAIL_CATCH_ALL=2 in your .env file
Use a PHP script to send an e-mail via built-in mail() funcion.
Go to Devilbox / Dashboard / E-mails
Click the row with the captured e-mail to attempt to see its body.
Host Operating System
Linux
Host Platform (amd64, arm64, other)
amd64
(Linux only) Is SELinux enabled?
I don't know
Docker version
Docker version 24.0.7, build 24.0.7-0ubuntu2~22.04.1
Docker Compose version
Docker Compose version v2.29.1
Devilbox version
3.0.0-beta-0.3 (2022-01-02)
Have you removed stopped containers before starting?
Yes
Have you pulled latest Docker images before starting?
Yes
Devilbox start command
docker compose up -d php52 httpd mysql
Config: .env file
Config: docker-compose.override.yml
Config: ./check-config.sh
Log: docker-compose logs
(Optional) Additional information
No response