fix: 解决网站 PHP 版本切换报错的问题 (#3228)

This commit is contained in:
zhengkunwang 2023-12-08 16:04:09 +08:00 committed by GitHub
parent fb709e7eaf
commit d4def44545
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 5 deletions

View file

@ -9,6 +9,7 @@ import (
"encoding/pem" "encoding/pem"
"errors" "errors"
"fmt" "fmt"
"github.com/1Panel-dev/1Panel/backend/utils/common"
"os" "os"
"path" "path"
"reflect" "reflect"
@ -1247,6 +1248,7 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error
phpDir = path.Join(constant.RuntimeDir, runtime.Type, runtime.Name, "php") phpDir = path.Join(constant.RuntimeDir, runtime.Type, runtime.Name, "php")
oldFmContent, _ = fileOp.GetContent(fpmConfDir) oldFmContent, _ = fileOp.GetContent(fpmConfDir)
newComposeByte []byte newComposeByte []byte
supervisorDir = path.Join(appInstall.GetPath(), "supervisor")
) )
envParams := make(map[string]string, len(envs)) envParams := make(map[string]string, len(envs))
handleMap(envs, envParams) handleMap(envs, envParams)
@ -1267,7 +1269,7 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error
return busErr return busErr
} }
newComposeByte, busErr = changeServiceName(composePath, appInstall.ServiceName) newComposeByte, busErr = changeServiceName(appDetail.DockerCompose, appInstall.ServiceName)
if busErr != nil { if busErr != nil {
return err return err
} }
@ -1288,6 +1290,22 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error
return busErr return busErr
} }
} }
if common.CompareVersion(appDetail.Version, "7.0") && !fileOp.Stat(supervisorDir) {
if appDetail.Update {
app, err := appRepo.GetFirst(commonRepo.WithByID(appDetail.AppId))
if err != nil {
busErr = err
return busErr
}
if busErr = downloadApp(app, appDetail, nil); err != nil {
return busErr
}
}
if busErr = fileOp.CopyDir(path.Join(phpDir, "supervisor"), appInstall.GetPath()); err != nil {
return busErr
}
}
if out, err := compose.Up(appInstall.GetComposePath()); err != nil { if out, err := compose.Up(appInstall.GetComposePath()); err != nil {
if out != "" { if out != "" {
busErr = errors.New(out) busErr = errors.New(out)

View file

@ -651,11 +651,9 @@ func chownRootDir(path string) error {
return nil return nil
} }
func changeServiceName(composePath, newServiceName string) (composeByte []byte, err error) { func changeServiceName(newComposeContent, newServiceName string) (composeByte []byte, err error) {
composeMap := make(map[string]interface{}) composeMap := make(map[string]interface{})
fileOp := files.NewFileOp() if err = yaml.Unmarshal([]byte(newComposeContent), &composeMap); err != nil {
composeContent, _ := fileOp.GetContent(composePath)
if err = yaml.Unmarshal(composeContent, &composeMap); err != nil {
return return
} }
value, ok := composeMap["services"] value, ok := composeMap["services"]