Docker Community Forums

Share and learn in the Docker community.

Your PHP installation appears to be missing the MySQL extension which is required by WordPress

I want to deploy my WordPress website on PHP/MySQL environment.

I use the official images.(php:5.6.16-apache and mysql:5.6.27)

Below is the command I used to start the container.

docker run --name wpdb01 -v /www/wp/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wpdbzaq12wsx MYSQL_DATABASE=wpdb MYSQL_USER=wpadmin MYSQL_PASSWD=wpadmzaq12wsx -d mysql:5.6.27

docker run --name wpap01 -v /www/wp/web:/var/www/html -p:80:80 --link wpdb01:db -d php:5.6.16-apache

I unzip the WordPress package into /www/wp/web

After confirm both containers are running.I try to access the WP installation through browser.
http://wp01.exmaple.com/wordpress/wp-admin/setup-config.php

Finally,the below error threw out.
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

I’ve tried to add the below lines in php.ini file and restarted apache2 but it didn’t work .
extension=mysql.so
extension=pdo_mysql.so

Anyone can support me about this problem?

Maybe I need a php.ini file to configure the MySQL extension.

The php image includes a couple scripts to help you install extensions in images build FROM the php image. Take a look at “How to install more PHP extensions” on https://hub.docker.com/_/php/.

Basically, you’ll create a Dockerfile that builds FROM this image. Next, you’ll apt-get install any dependencies needed for the mysql extension, and then use docker-php-ext-configure and docker-php-ext-install to actually install the extension.

Alternatively, there is an official wordpress image that is available as well: https://hub.docker.com/_/wordpress/.

Hello Programmerq:

      Thanks for your reply about this problem and you're right that I miss to install the mysql extensions.No mysql.so exist in this container.

      I think I use a foolish way to solve this problem.

      I enter /usr/src/php/ext/mysql to generate mysql.so manually.
      1.root@c65017696ff0:/usr/src/php/ext/mysql# phpize 
      2.root@c65017696ff0:/usr/src/php/ext/mysql# ./configure 
      3.root@c65017696ff0:/usr/src/php/ext/mysql# make
      4.root@c65017696ff0:/usr/src/php/ext/mysql# make install
      5.root@c65017696ff0:#cp /usr/src/php/ext/mysql/modules/mysql.so /usr/src/php/ext
      6.Add 2 lines into /usr/local/etc/php/php.ini file
         extension=mysql.so
         extension_dir = /usr/src/php/ext
     7.Restart apache2
        apache2ctl -k restart

    Finally I commit the container to make a local PHP  image.

    Thank you .

When I upgraded my website PHP from version 5.6 to 7.2, I encountered this problem “Your PHP installation appears to be missing the MySQL extension which is required by WordPress”. It turns out that mysql extension is no longer supported in php version 7.2. It is now using mysqli extention. I am using old version of wordpress which still using mysql extension that is why the problem existed. So what I did is upgraded the wordpress to the core. This solve the problem.

Here’s the steps I followed when upgrading wordpress manually.

  1. First I created a full backup of my website Fraction Calc. This is very important in case of mistake.

  2. I download the newest WordPress ZIP file from wordpress.org.

  3. I unzipped the file into a local directory of my computer.

  4. I went to my website root directory and deleted your ‘wp-includes’ and ‘wp-admin’ directories. I used sFTP connection using Filezilla software.

  5. I uploaded the new wp-includes and wp-admin directories from the new version of WordPress I unzipped to my website root directory and replaced the directories I just deleted.

  6. I did not delete the wp-content directory or any of the files in that directory. I just copied over the files from the wp-content directory in the new version of WordPress to my existing wp-content directory. All existing files with the same name have been overwritten.

  7. I copied all files from the root (‘/’) directory of the new version of WordPress that I unzipped into my website root directory (or the root directory of your WordPress installation). Existing files has been overwritten and new files has been copied across. wp-config.php file was not be affected because WordPress has never distributed with a wp-config.php file.

  8. I compare wp-config-sample.php which was\s distributed with WordPress but did not find anything to change so I just used the old one.

  9. I cleared my browser cache to ensure I can see all changes.

  10. I checked the site and there is no error now. Thanks God the upgrade was completed.