diff --git a/local/php/fpm.go b/local/php/fpm.go index ecbce2ff..94b44485 100644 --- a/local/php/fpm.go +++ b/local/php/fpm.go @@ -25,10 +25,12 @@ import ( "os" "os/exec" "os/user" + "path" "path/filepath" "strings" "github.com/hashicorp/go-version" + "github.com/symfony-cli/symfony-cli/util" "github.com/symfony-cli/terminal" ) @@ -117,3 +119,13 @@ func (p *Server) fpmConfigFile() string { } return path } + +func (p *Server) fpmSocketFile() string { + socketDir := path.Join(util.GetHomeDir(), name(p.projectDir)) + + if _, err := os.Stat(socketDir); os.IsNotExist(err) { + os.MkdirAll(socketDir, os.ModePerm) + } + + return path.Join(util.GetHomeDir(), name(p.projectDir), "php-fpm.sock") +} diff --git a/local/php/php_server.go b/local/php/php_server.go index 676e88a0..d1e29e1f 100644 --- a/local/php/php_server.go +++ b/local/php/php_server.go @@ -98,11 +98,12 @@ func (p *Server) Start(ctx context.Context, pidFile *pid.PidFile) (*pid.PidFile, var binName, workerName string var args []string if p.Version.IsFPMServer() { + p.addr = p.fpmSocketFile() fpmConfigFile := p.fpmConfigFile() if err := ioutil.WriteFile(fpmConfigFile, []byte(p.defaultFPMConf()), 0644); err != nil { return nil, nil, errors.WithStack(err) } - pathsToRemove = append(pathsToRemove, fpmConfigFile) + pathsToRemove = append(pathsToRemove, fpmConfigFile, p.addr) binName = "php-fpm" workerName = "PHP-FPM" args = []string{p.Version.ServerPath(), "--nodaemonize", "--fpm-config", fpmConfigFile} @@ -150,7 +151,7 @@ func (p *Server) Start(ctx context.Context, pidFile *pid.PidFile) (*pid.PidFile, Args: args, scriptDir: p.projectDir, } - p.logger.Info().Int("port", port).Msg("listening") + p.logger.Info().Str("listen", p.addr).Msg("listening") phpPidFile := pid.New(pidFile.Dir, append([]string{p.Version.ServerPath()}, e.Args[1:]...)) if phpPidFile.IsRunning() { @@ -224,8 +225,14 @@ func (p *Server) serveFastCGI(env map[string]string, w http.ResponseWriter, r *h max := 10 i := 0 for { - if fcgi, err = fcgiclient.Dial("tcp", p.addr); err == nil { - break + if p.Version.IsFPMServer() { + if fcgi, err = fcgiclient.Dial("unix", p.addr); err == nil { + break + } + } else { + if fcgi, err = fcgiclient.Dial("tcp", p.addr); err == nil { + break + } } i++ if i > max {