所以我正在学习/试验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.conf
和php8.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
任何帮助将不胜感激。
1条答案
按热度按时间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
,这就成功了。