Caddy php_fastcgi 报错解决

新配置了一台Ubuntu环境的机器,但Caddy访问php-cgi.sock一直报错

Dec 23 16:10:05 server.bra caddy[2190]: {"level":"error","ts":1608711005.8737435,"logger":"http.log.error.log0","msg":"dialing backend: dial unix /tmp/php-cgi.sock: connect: no such file or directory","reque>
Dec 23 16:10:06 server.bra caddy[2190]: {"level":"error","ts":1608711006.7073374,"logger":"http.log.error.log0","msg":"dialing backend: dial unix /tmp/php-cgi.sock: connect: no such file or directory","reque>
Dec 23 16:10:07 server.bra caddy[2190]: {"level":"error","ts":1608711007.4454968,"logger":"http.log.error.log0","msg":"dialing backend: dial unix /tmp/php-cgi.sock: connect: no such file or directory","reque>
Dec 23 16:10:33 server.bra caddy[2190]: {"level":"error","ts":1608711033.5685365,"logger":"http.log.error.log0","msg":"dialing backend: dial unix /tmp/php-cgi.sock: connect: no such file or directory","reque>
Dec 23 16:11:03 server.bra caddy[2190]: {"level":"error","ts":1608711063.8184068,"logger":"http.log.error.log0","msg":"dialing backend: dial unix /tmp/php-cgi.sock: connect: no such file or directory","reque>

查了半天,一直查不到什么原因。

Caddy启动用的是官方的caddy.service,最后看到有一个配置段

PrivateTmp=true

改为

PrivateTmp=false

然后

# systemctl daemon-reload
# systemctl reload caddy

重启服务就搞定了

别处摘抄一段

其实上面的配置是没用错误的,即使把各种权限单独验证一遍都是可以,除了在这个服务里面是失败的外,其他的测试都是正常的。打开 /usr/lib/systemd/system/caddy.service ,仔细看里面有好几个类似 ProtectHome=true 的不常见的配置项,大概概括如下:

ProtectHome 可以设置为 true/false/read-only。 设置为 true 的时候,/home、 /root、 /run/user 对应用不可见。设置为 read-only, 上述三个目录对应用只读。设置为 false, 则应用可以正常访问这三个目录。 默认值是 false。为了保证应用不能访问用户私有数据, 建议所有长时间运行的服务开启该选项。

ProtectSystem 可以设置为 true/false/full。 设置为 true、/usr、/boot 被设置为只读。 设置为 full、 /usr、 /boot、 /etc 被设置为只读。 设置为 false,则应用可以正常访问上述目录。这个选项可以保护系统目录不会被应用修改, 建议所有长时间运行的服务开启该选项。