【发布时间】:2019-05-22 09:25:06
【问题描述】:
我的 PHP Docker 容器没有处理文件,而是返回源代码。
以下内容被返回而不是被执行:
<?php
phpinfo();
?>
docker ps 的输出,表明我的两个容器都在运行并在各自的端口上侦听:
dan@server:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5e235112a35 php:7.2-fpm "docker-php-entrypoi…" 23 minutes ago Up 23 minutes 0.0.0.0:9000->9000/tcp php
2196a8f251d3 httpd "httpd-foreground" 5 days ago Up 33 seconds 0.0.0.0:80->80/tcp apache
虚拟主机配置,注意 FilesMatch 指令将 PHP 传递给容器。
<Directory /usr/local/apache2/htdocs/default>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
<VirtualHost 192.168.2.35:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /usr/local/apache2/htdocs/default
<FilesMatch \.php$>
SetHandler "proxy:fcgi://php:9000"
</FilesMatch>
LogLevel trace1
ErrorLog logs/error.default.ca.log
CustomLog logs/access.default.ca.log combined
</VirtualHost>
Apache 日志,显示该文件正在由 Apache 提供服务。
192.168.2.30 - - [22/Dec/2018:02:40:49 +0000] "GET /default/index.php HTTP/1.1" 200 24
编辑
我正在尝试在单独的容器中运行 Apache、PHP 和 MariaDB。我先运行了 Apache,现在我正在尝试附加 PHP。
最后,我想添加 Nextcloud,IIRC 有一个没有 Apache 的容器,我可以在其中重复使用我现有的容器。
我的 PHP Dockerfile
FROM php:7.2-fpm
RUN buildDeps=" \
libmcrypt-dev \
default-libmysqlclient-dev \
libjpeg-dev \
libldap2-dev \
libmemcachedutil2 \
libpng-dev \
libpq-dev \
libxml2-dev \
" \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $buildDeps $runtimeDeps \
&& pecl install mcrypt-1.0.1 && docker-php-ext-enable mcrypt.so \
&& docker-php-ext-install bcmath bz2 calendar iconv json intl mbstring mysqli opcache pdo_mysql soap zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
&& apt-get purge -y --auto-remove $buildDeps \
&& rm -r /var/lib/apt/lists/*
【问题讨论】:
标签: php apache docker apache2.4 fpm