Задать вопрос
@stastp

Где у меня ошибка при добавлении своего приложения в HestiaCP?

Всех приветствую, решил для упрощения жизни сделать авто установку кволтона. Получилось так
/usr/local/hestia/web/src/app/WebApp/Installers/GDPS/GDPSSetup.php

<?php
namespace Hestia\WebApp\Installers\GDPS;
use Hestia\System\Util;
use \Hestia\WebApp\Installers\BaseSetup as BaseSetup;

class GDPSSetup extends BaseSetup {
    protected $appInfo = [
        'name' => 'GMDPrivateServer',
        'group' => 'cms',
        'enabled' => true,
        'version' => 'latest',
        'thumbnail' => 'icon.png'
    ];
    
    protected $appname = 'gmdprivateserver';
    
    protected $config = [
        'form' => [
            'site_name' => ['type' => 'text', 'value' => 'Geometry Dash Server'],
            'protocol' => [
                'type' => 'select',
                'options' => ['http', 'https'],
                'value' => 'https'
            ],
        ],
        'database' => true,
        'resources' => [
            'archive' => ['src' => 'https://s3.crydevs.ru/upload.zip']
        ],
        'server' => [
            'php' => [
                'supported' => ['7.4', '8.0', '8.1', '8.2'],
            ],
            'nginx' => [
                'template' => 'default',
            ],
            'apache2' => [
                'template' => 'default',
            ]
        ]
    ];

    public function install(array $options = null)
    {
        $domain = $this->domain;
        $user = $this->appcontext->user();
        
        // Проверяем существование домена
        $check_domain = $this->appcontext->run('v-list-web-domain', [$user, $domain, 'json'], $status);
        
        if ($status->code !== 0) {
            // Домен не существует, создаем его
            parent::install($options);
        } else {
            // Домен существует, распаковываем файлы
            $this->appcontext->runUser('v-extract-fs-archive', [
                $this->getDocRoot(),
                $this->getArchivePath()
            ], $status);
            
            if ($status->code !== 0) {
                throw new \Exception("Ошибка распаковки архива: " . $status->message);
            }
        }

        // Импорт базы данных с использованием v-import-database
        $this->appcontext->runUser('v-import-database', [
            $user,
            $options['database_name'],
            $options['database_user'],
            $options['database_password'],
            $this->getDocRoot('database.sql')
        ], $status);
        
        if ($status->code !== 0) {
            throw new \Exception('Ошибка импорта базы данных: ' . $status->message);
        }

        // Обновление конфигурации подключения
        $configFile = $this->getDocRoot('config/connection.php');
        $configContent = "<?php\n";
        $configContent .= '$servername = "127.0.0.1";' . "\n";
        $configContent .= '$port = 3306;' . "\n";
        $configContent .= '$username = "' . $options['database_user'] . '";' . "\n";
        $configContent .= '$password = "' . $options['database_password'] . '";' . "\n";
        $configContent .= '$dbname = "' . $options['database_name'] . '";' . "\n";
        $configContent .= "?>";

        // Запись конфигурации
        if (file_put_contents($configFile, $configContent) === false) {
            throw new \Exception("Не удалось записать конфигурационный файл");
        }

        return ($status->code === 0);
    }
}


PS, признаю великий грех, использовал DeepSeek, файл icon.png есть, размеры 300x300
Уверен что ошибка тут, при перемещении GDPS за пределы этой папки всё работает
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы