feat: optimization install php extensions (#10403)

This commit is contained in:
CityFun 2025-09-18 15:02:36 +08:00 committed by GitHub
parent 37ef2059f1
commit fd21e8de14
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 76 additions and 22 deletions

View file

@ -689,9 +689,15 @@ func checkContainerStatus(name string) (string, error) {
return "", nil
}
func delPHPExtensions(dir, phpExtensionDir, fileName, extName string) {
fileOp := files.NewFileOp()
_ = fileOp.DeleteFile(path.Join(phpExtensionDir, fileName))
_ = fileOp.DeleteFile(path.Join(dir, "conf", "conf.d", "docker-php-ext-"+extName+".ini"))
_ = removePHPIniExt(path.Join(dir, "conf", "php.ini"), fileName)
}
func unInstallPHPExtension(runtime *model.Runtime, delExtensions []string) error {
dir := runtime.GetPath()
fileOP := files.NewFileOp()
var phpExtensions []response.SupportExtension
if err := json.Unmarshal(nginx_conf.GetWebsiteFile("php_extensions.json"), &phpExtensions); err != nil {
return err
@ -700,16 +706,20 @@ func unInstallPHPExtension(runtime *model.Runtime, delExtensions []string) error
phpExtensionDir := path.Join(dir, "extensions", getExtensionDir(phpVersion))
delMap := make(map[string]struct{})
for _, ext := range phpExtensions {
for _, del := range delExtensions {
for _, del := range delExtensions {
exist := false
for _, ext := range phpExtensions {
if ext.Name == del {
exist = true
delMap[ext.Check] = struct{}{}
_ = fileOP.DeleteFile(path.Join(phpExtensionDir, ext.File))
_ = fileOP.DeleteFile(path.Join(dir, "conf", "conf.d", "docker-php-ext-"+ext.Check+".ini"))
_ = removePHPIniExt(path.Join(dir, "conf", "php.ini"), ext.File)
delPHPExtensions(dir, phpExtensionDir, ext.Check, ext.Name)
break
}
}
if !exist {
delMap[del] = struct{}{}
delPHPExtensions(dir, phpExtensionDir, del+".so", del)
}
}
extensions := getRuntimeEnv(runtime.Env, "PHP_EXTENSIONS")
var (

View file

@ -1,4 +1,25 @@
[
{
"name": "amqp",
"check": "amqp",
"file": "amqp.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "apcu",
"check": "apcu",
"file": "apcu.so",
"versions": ["56", "70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "bcmath",
"check": "bcmath",
"file": "bcmath.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "ionCube",
"check": "ionCube Loader",
@ -41,13 +62,7 @@
"versions": ["70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "apcu",
"check": "apcu",
"file": "apcu.so",
"versions": ["56", "70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "imagick",
"check": "imagick",
@ -363,13 +378,7 @@
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "bcmath",
"check": "bcmath",
"file": "bcmath.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "pcntl",
"check": "pcntl",
@ -383,5 +392,40 @@
"file": "sodium.so",
"versions": ["70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "gettext",
"check": "gettext",
"file": "gettext.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "soap",
"check": "soap",
"file": "soap.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "sysvsem",
"check": "sysvsem",
"file": "sysvsem.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "sockets",
"check": "sockets",
"file": "sockets.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
},
{
"name": "xmlrpc",
"check": "xmlrpc",
"file": "xmlrpc.so",
"versions": ["56","70", "71", "72", "73", "74", "80", "81", "82", "83","84"],
"installed": false
}
]

View file

@ -9,9 +9,9 @@
:autoClose="false"
>
<template #content>
<el-form ref="formRef" :model="form" label-position="top">
<el-form ref="formRef" :model="form" label-position="top" @submit.prevent>
<el-form-item :label="$t('commons.table.user')" prop="user">
<el-input placeholder="root" clearable v-model="form.user">
<el-input placeholder="root" clearable v-model="form.user" @keyup.enter="reConnect">
<template #append>
<el-button @click="reConnect">{{ $t('commons.button.conn') }}</el-button>
</template>