apache 在Docker Container中运行PHP httpd:latest

hgc7kmma  于 2023-10-23  发布在  Apache
关注(0)|答案(1)|浏览(144)

所以我正在学习/试验Docker -我正在从Docker Hub运行Apache容器-特别是我正在运行最新的标签。下面是我使用的命令:


docker run --name apacheServer -p 80:80 -v $(PWD)/Apache/htdocs:/usr/local/apache2/htdocs httpd:latest


一切正常,如果我去http://localhost/我可以看到index.html文件在指定的目录。然而,我现在试图添加PHP到它,不能让它工作。这就是我到目前为止所尝试的。

从容器的交互式 shell 中,我运行了以下命令。



apt update

apt upgrade -y

apt install php8.2

apt install php libapache2-mod-php -y

做完这件事后。我通过运行php -v检查了PHP是否已安装



。



PHP 8.2.7 (cli) (built: Jun  9 2023 19:37:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

在使用apachectl restart重新启动Apache后,我运行了以下命令:



a2enmod php8.2

我得到了以下消息“Module php8.2 already enabled”然而,我然后试着做:



apachectl -M

但是PHP模块没有在列表中列出。这是我得到的列表:


Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_event_module (shared)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)

所以我就在这里迷路了。不知道下一步该怎么办。因为如果我说了
ls /etc/apache2/mods-available我可以看到php8.2.confphp8.2.load列表,但不在ls /usr/local/apache2/modules/中,也不在libphp8.2.so
作为最后一次尝试,我运行了以下命令:
find /usr/lib/ -name libphp*.so并返回/usr/lib/apache2/modules/libphp8.2.so
我尝试在/usr/local/apache 2/conf/httpd.conf文件中手动添加该文件,方法是添加

LoadModule php_module /usr/lib/apache2/modules/libphp8.2.so

但是当我重新启动Apache时,我得到了以下错误消息:Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed
任何帮助将不胜感激。

7rtdyuoh

7rtdyuoh1#

好吧,所以我能弄清楚。
为了修复我得到的错误Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed,在将LoadModule php_module /usr/lib/apache2/modules/libphp8.2.so添加到配置文件后,我必须注解掉LoadModule mpm_event_module modules/mod_mpm_event.so并取消注解LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
(感谢:https://stackoverflow.com/a/62041173/4585097).
我还必须添加Include /etc/apache2/mods-available/php8.2.conf,这就成功了。

相关问题