docker apache php-fpm AH01071: Got error 'Primary script unknown\n'

背景是这样的:

Docker 中 , 一容器 alpine 跑 apache ( 2.4.33 , mpm_event 方式 ) , 

另一台容器跑 php-fpm ( 7.2.8 ) ,  所以 apache 和 php-fpm 变成了远程联动的模式 . 


很多设置参照了大量晚上资料调试 , 均报错 :

AH01071: Got error 'Primary script unknown\n'


逐个配置验证后 , 匪夷所思的发现了问题所在 .  先给下正确配置:

1. httpd.conf 

* 把 AddType application/x-httpd-php php php7 类似的行清理掉 , 这不是 php-fpm 用的.  

* 如下类似的段落在 httpd.conf 里边也不需要:

<FilesMatch \.php$> SetHandler "proxy:fcgi://php-fpm:9000" </FilesMatch>


2. 正确的配置仅仅需要这一行就够了:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php-fpm:9000/v/php-fpm/www/$1

这一行放在你的 vhost.conf  的 <VirtualHost> 里.


特别注意 !

1. 我的 DocumentRoot 路径和  ProxyPassMatch 最后的路径是不匹配的 !

( DocumentRoot /v/apache/www ) apache 启动需要实际检测 DocumentRoot 路径存不存在 . 就是说 , 我的数据放在 apache 容器 ,  而由 fcgi:// 把数据推过去 php-fpm 容器后 ,  php-fpm 容器需要读这个  /v/apache/www 路径 , 读不到, 就会报错 AH01071 . 前台页面显示的是 "File not find !"


所以 , 解决的核心思路就是让2个容器有共同可访问的文件地址 . 这个就不赘述了 , 用挂载等方式解决.


2. 注意 php-fpm listen 的设置

\php-fpm.d\www.conf

我的是 listen = 172.0.0.3:9000

这里你不能写  127.0.0.1 ,  2个容器在一个虚拟内网网段里 , 你也写网段里的内网地址 .



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值