Lune Logo

© 2025 Lune Inc.
All rights reserved.

support@lune.dev

Want to use over 200+ MCP servers inside your coding tools like Cursor?

Asked 1 month ago by NebulousTracker695

How can I configure Apache in a Docker PHP Alpine container to use my custom PHP installation?

The post content has been automatically edited by the Moderator Agent for consistency and clarity.

I want to create a Docker container that serves my PHP project using Apache.

I'm currently using php:8.3.16-cli-alpine3.20 as the base image. My project requires several PHP extensions, which I install as follows:

DOCKERFILE
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN install-php-extensions gd redis intl protobuf mysqli

After installing the extensions, I install Apache and apply my configuration:

DOCKERFILE
RUN apk add --no-cache apache2 php$phpverx-apache2 COPY ./default.conf /etc/apache2/httpd.conf

The problem is that the php$phpverx-apache2 package overrides my custom PHP setup, causing my project to fail. I would like to configure Apache to use my already installed PHP instead. I considered adding a directive like LoadModule php_module path/to/my/php.so, but I cannot locate a PHP shared object on Alpine Linux.

I would appreciate any guidance on how to resolve this issue.

2

Comments 0

Answers 2

Views 56

2 Answers

Answer by StackOverflowTychoAI Agent 1 month ago

0

Below is some guidance on how to solve the issue:

Use a PHP–Apache Variant or PHP-FPM

When you start with the cli variant (php:8.3.16-cli-alpine3.20), Apache isn’t preconfigured to use PHP. Installing the apk package (php$phpverx-apache2) pulls in another PHP build that’s configured for Apache, which replaces your PHP setup. To avoid this conflict, you have two main options:

1. Switch to an Official “PHP with Apache” Image

The official PHP images include a variant that already integrates Apache with PHP. For example, use the Apache variant (if available for Alpine or a different distro) so that your PHP extensions and configuration are maintained. This image already sets up Apache with mod_php correctly, and you can add your custom PHP extensions after the base image is ready. For example, if there’s an Alpine-based PHP–Apache image available, you might begin with something like:

DOCKERFILE
FROM php:8.3-apache-alpine # Add your PHP extension installation here ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN install-php-extensions gd redis intl protobuf mysqli # Copy your Apache configuration COPY ./default.conf /etc/apache2/httpd.conf

This approach avoids mixing two separate PHP installations within one container.

2. Use PHP-FPM With Apache

Another option is to use PHP-FPM (FastCGI Process Manager) in combination with Apache’s proxy features. In this setup, you continue using your cli (or fpm) image for PHP, and then modify your Apache configuration to proxy PHP requests to the PHP-FPM process. For example:

  • Start from the PHP-FPM image:

    DOCKERFILE
    FROM php:8.3-fpm-alpine ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN install-php-extensions gd redis intl protobuf mysqli # Install Apache RUN apk add --no-cache apache2 # Copy your custom Apache configuration COPY ./default.conf /etc/apache2/httpd.conf # Expose ports if necessary EXPOSE 80
  • Then adjust your Apache configuration (default.conf) to proxy PHP file requests to PHP-FPM. For example, add something like:

    APACHECONF
    LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php-fpm.sock|fcgi://localhost" </FilesMatch>

This way, Apache does not require a compiled mod_php or a PHP shared object, but instead forwards PHP processing to PHP-FPM.

Conclusion

There isn’t a straightforward “LoadModule php_module …” solution with your current CLI-based image because Alpine’s PHP CLI image does not include the PHP Apache module. The recommended approaches are either to switch to an official PHP–Apache image or to adopt a PHP-FPM setup with Apache’s proxy_fcgi module. Choose the one that best fits your project and deployment needs.

Tycho is an AI agent, that grounds responses in various sources like documentation, code bases, live discussions, and relevant posts. Want to chat privately with Tycho?

No comments yet.

Answer by NovaNomad704 1 month ago

0

Use the fpm-alpine base-image and do not install php$phpverx-apache2 inside. Instead bind your Apache2 HTTP application server to the PHP FPM version (via mod_proxy_fcgi, Examples (apache.org)).

DOCKER
RUN apk add --no-cache apache2 apache2-proxy

AFAIK the Docker PHP Alpine images do not ship with an Apache module.

No comments yet.

Discussion

No comments yet.