You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Red Hat 7.9下libphp.so、PHP80与HTTPD 2.4.56的兼容问题

解决Apache线程化MPM与PHP80模块冲突的启动报错问题

问题根源

你的编译版Apache启用了mpm_worker_module(线程化多处理模块),但Remi源提供的PHP80的libphp.so是非线程安全(NTS)版本,线程化MPM和非线程安全的PHP模块不兼容,所以启动时报错。而yum安装的Apache默认用的是非线程化的mpm_prefork_module,刚好适配NTS的PHP模块,所以能正常运行。

两种解决办法

办法一:把Apache的MPM换成prefork

  1. 找到Apache的MPM配置文件,一般是/app/httpd/conf/extra/httpd-mpm.conf,也可能直接写在httpd.conf里
  2. 注释掉worker相关的配置块,打开prefork的配置:
    # worker MPM配置,注释掉
    # <IfModule mpm_worker_module>
    #     StartServers             2
    #     MaxClients             150
    #     MinSpareThreads         25
    #     MaxSpareThreads         75
    #     ThreadsPerChild         25
    #     MaxRequestsPerChild      0
    # </IfModule>
    
    # 启用prefork MPM
    <IfModule mpm_prefork_module>
        StartServers             5
        MinSpareServers          5
        MaxSpareServers         10
        MaxClients              150
        MaxRequestsPerChild      0
    </IfModule>
    
  3. 保存后重启Apache:
    /app/httpd/bin/httpd -k restart
    

办法二:改用PHP-FPM模式(更推荐,性能更好)

如果不想改MPM,用FastCGI模式的PHP-FPM替代模块加载:

  1. 先在httpd.conf里注释掉PHP模块加载的行:
    # LoadModule php_module modules/libphp.so
    
  2. 启动Remi的PHP80-FPM服务:
    systemctl start php80-php-fpm
    systemctl enable php80-php-fpm
    
  3. 在Apache配置里加FastCGI转发规则(可以写在httpd.conf或者虚拟主机配置文件中):
    如果PHP-FPM监听的是9000端口,规则如下:
    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
    
    如果是监听套接字(路径一般是/var/opt/remi/php80/run/php-fpm/www.sock),规则改成:
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/opt/remi/php80/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
    
  4. 重启Apache生效:
    /app/httpd/bin/httpd -k restart
    

内容的提问来源于stack exchange,提问作者Dreameyes86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:42:17