Приложение
Как установить приложение на iOS

Смотрите видео ниже, чтобы узнать, как установить iTnull.info в качестве веб-приложения.

Примечание: Эта функция может быть недоступна в некоторых браузерах.

Скрипт Keitaro v9.12.15 NULLED - трекер для CPA

  • Последнее редактирование:
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1 из 147
Последнее редактирование:
кейтаро-главная-1024x598.png

Keitaro — профессиональный трекер для CPA-арбитража, покупки трафика, оптимизации рекламных кампаний - Keitaro

Скачать:

Инсталятор, который скачает, установит и автоматически обнулит последнюю версию с оф.сайта разработчиков.

Запускать из консоли командой
php -f install.php install --db-user="admin" --db-name="admin" --db-password="admin" --admin-login="admin" --admin-password="admin" --language=ru
Перед запуском команды вы должны убедиться, что указываемая база и пользователь базы созданы.

Обновленный архив с инструкцией:

Новая инструкция по установке Keitaro 9.12.15 на чистый сервер с CentOS
Код:
yum install curl -y && curl keitaro.io/kctl.sh | bash -s -- install

По окончанию установки, вам выдаст сообщение




После установки переходим просмотру файла /var/www/keitaro/application/config/config.ini.php
От сюда нужно скопировать и сохранить пароль для подключения к бд.

1. Качаем архив с файлами и базой данных:
2. Удаляем все файлы из: /var/www/keitaro/
3. Заливаем архив на сервер и распаковываем архив: tar -C "/var/www/" -xvf keitaro_null.tgz
4. Переходим по адресу:
5. В хост вводим: 127.0.0.1
6. Имя базы данных и имя юзера: keitaro
7. Пароль ранее сохранённый из: /var/www/keitaro/application/config/config.ini.php
8. Удаляем содержимое базы и заливаем дамп базы данных из архива
9. В /var/www/keitaro/application/config/config.ini.php прописываем пароль от базы данных
10. В консоле устанавливаем права: chown -R keitaro:keitaro /var/www/keitaro
11. Перезагружаемся и готовенько, переходим
12. Логин и пароль: admin

По желанию можно удалить /var/www/keitaro/admin/adminer-4.8.1.php
И рекомендую в системе сменить пароль у юзера keitaro: passwd keitaro

Все команды выполняем строго под root !!!
 
Последнее редактирование:

hpserver.vip

Пользователь
За классный аватар
Регистрация
16.01.25
Сообщения
7
Симпатии
0
Добрый день. Начала выскакивать вот такая ошибка, как исправляется и что это за ошибка?
Код:
main.ERROR: Fatal Error in /var/www/keitaro/application/Core/Application/FeatureService.php line 21: Uncaught Error: Call to a member function edition() on null in /var/www/keitaro/application/Core/Application/FeatureService.php:21
Хотя Все работал и все было нормально.
Похоже на проблему с кроном!
 

Nikolai4598

Пользователь
За классный аватар
Регистрация
25.07.24
Сообщения
11
Симпатии
0
А как решить. У меня стоит на сервере Centos 9 OS. Может както обновить или нужно всетаки переустанавливать кейтаро? Все поновой делать?
 

hpserver.vip

Пользователь
За классный аватар
Регистрация
16.01.25
Сообщения
7
Симпатии
0
А как решить. У меня стоит на сервере Centos 9 OS. Может както обновить или нужно всетаки переустанавливать кейтаро? Все поновой делать?
Попробуй через чат джипити решить вопрос, дай ему ошибку! Должен помочь
 

Jigsaw

Пользователь
За классный аватар
Регистрация
26.11.24
Сообщения
13
Симпатии
6
А как решить. У меня стоит на сервере Centos 9 OS. Может както обновить или нужно всетаки переустанавливать кейтаро? Все поновой делать?

Попробуй заменить код в файле application/Core/Application/FeatureService.php на следующий:

PHP:
<?php

namespace Core\Application;

class FeatureService extends \Traffic\Service\AbstractService
{
    private $_payload = NULL;
    const USERS_LIMIT = 6;

    public function __construct(EssentialPayload $payload = NULL)
    {
        if ($payload) {
            $this->init($payload);
        }
    }

    public function init(EssentialPayload $payload)
    {
        $this->_payload = $payload;
    }

    public function isTrial()
    {
        return $this->_payload !== null && $this->_payload->edition() == EssentialPayload::TRIAL;
    }

    public function isBasic()
    {
        return $this->_payload !== null && $this->_payload->edition() == EssentialPayload::BASIC;
    }

    public function isPro()
    {
        return $this->_payload !== null && $this->_payload->edition() == EssentialPayload::PRO;
    }

    public function isBusiness()
    {
        return $this->_payload !== null && $this->_payload->edition() == EssentialPayload::BUSINESS;
    }

    public function getEdition()
    {
        return $this->_payload !== null ? $this->_payload->edition() : null; // Или вернуть значение по умолчанию
    }

    public function hasDomainsFeature()
    {
        return $this->isTrial() || $this->isPro() || $this->isBusiness();
    }

    public function hasExtensionsFeature()
    {
        return $this->isTrial() || $this->isPro() || $this->isBusiness();
    }

    public function hasUsersFeature()
    {
        return $this->isTrial() || $this->isPro() || $this->isBusiness();
    }

    public function hasBrandingFeature()
    {
        return $this->isBusiness();
    }

    public function hasUnlimitedUserFeature()
    {
        if ($this->isBusiness()) {
            return true;
        }
        if ($this->isTrial()) {
            return false;
        }
        if ($this->isBasic()) {
            return false;
        }
        return $this->_payload !== null && !$this->_payload->mustLimitUsers();
    }

    public function hasClickApiFeature()
    {
        return true; // Если это условие всегда истинно, можно оставить так
        if ($this->isBasic() && $this->_payload !== null && $this->_payload->clickApiForProOnly()) {
            return false;
        }
        return true;
    }

    public function hasAdminApiFeature()
    {
        return true; // Если это условие всегда истинно, можно оставить так
        if ($this->isTrial() || $this->isBasic()) {
            return false;
        }
        if ($this->isBusiness()) {
            return true;
        }
        if ($this->isPro() && $this->_payload !== null && !$this->_payload->adminApiBusinessOnly()) {
            return true;
        }
        return false;
    }

    public function getUsersLimit()
    {
        return $this->hasUnlimitedUserFeature() ? 9999 : self::USERS_LIMIT;
    }

    public function getLicenseExpireTime()
    {
        $date = new \DateTime();
        return $date->setTimestamp(time() + 60 * 60 * 24 * 256 * 3);
    }
}

?>

Обновленный код класса FeatureService, в котором добавлены проверки на null для переменной _payload, чтобы избежать ошибки "Call to a member function edition() on null":
 

Nikolai4598

Пользователь
За классный аватар
Регистрация
25.07.24
Сообщения
11
Симпатии
0
  • Последнее редактирование модератором:
Последнее редактирование модератором:
не помогло сделал как вы посоветовали поменял весь код. Появилась другая ошибка. А джпт начал мне такую ересть говорить. Тоесть я понимаю что сломалось что-то. И лучше попробовать переустановить.
Вот такая ошибка сейчас. что за брет всеж работало норм.
Код:
main.ERROR: Fatal Error in /var/www/keitaro/application/Traffic/CommandQueue/Service/DelayedCommandService.php line 101: Uncaught Error: Call to a member function count() on null in /var/www/keitaro/application/Traffic/CommandQueue/Service/DelayedCommandService.php:101
 
Последнее редактирование модератором:

Jigsaw

Пользователь
За классный аватар
Регистрация
26.11.24
Сообщения
13
Симпатии
6
не помогло сделал как вы посоветовали поменял весь код. Появилась другая ошибка. А джпт начал мне такую ересть говорить. Тоесть я понимаю что сломалось что-то. И лучше попробовать переустановить.
Вот такая ошибка сейчас. что за брет всеж работало норм.
main.ERROR: Fatal Error in /var/www/keitaro/application/Traffic/CommandQueue/Service/DelayedCommandService.php line 101: Uncaught Error: Call to a member function count() on null in /var/www/keitaro/application/Traffic/CommandQueue/Service/DelayedCommandService.php:101

Попробуй заменить код в файле application/Traffic/CommandQueue/Service/DelayedCommandService.php на следующий:
PHP:
<?php
namespace Traffic\CommandQueue\Service;

use Traffic\CommandQueue\QueueStorage\StorageInterface;
use Traffic\Service\AbstractService;
use Traffic\Logging\Service\LoggerService;
use Traffic\Tools\Tools;

class DelayedCommandService extends AbstractService
{
    const PAYLOAD = 'payload';
    const COMMAND = 'command';
    const MAX_RETRIES = 3;
    const RETRY_PARAM = 'retry';
    const COMMAND_NAME_PARAM = 'command';

    private $_storage;
    private $_compression = false;

    public function setStorage(StorageInterface $storage)
    {
        $this->_storage = $storage;
    }

    /**
     * @return StorageInterface
     */
    private function getStorage()
    {
        return $this->_storage;
    }

    public function queueSize()
    {
        $storage = $this->getStorage();
        if ($storage === null) {
            throw new \Exception('Storage is not set');
        }
        return $storage->count();
    }

    public function clean()
    {
        LoggerService::instance()->debug("[DelayedCommandService] clean");
        return $this->getStorage()->clean();
    }

    public function enableCompression()
    {
        return $this->_compression = true;
    }

    public function push($command)
    {
        if (empty($this->_storage)) {
            throw new \Exception('Storage is not set');
        }
        LoggerService::instance()->debug(function () use ($command) {
            $count = $this->queueSize();
            return 'Pushed command: ' . json_encode($command) .' current count ' . $count;
        });

        $command = json_encode(Tools::utf8ize($command), JSON_PARTIAL_OUTPUT_ON_ERROR);

        $status = $this->getStorage()->push($command);

        LoggerService::instance()->debug(function () use ($command) {
            $count = $this->queueSize();
            return 'Pushed. Count ' . $count;
        });

        return $status;
    }

    public function popAll()
    {
        $result = [];
        foreach ($this->pop() as $item) {
            $result[] = $item;
        }
        return $result;
    }

    public function pop()
    {
        foreach ($this->getStorage()->pop() as $encodedData) {
            if (empty($encodedData)) {
                continue;
            }

            $data = json_decode($encodedData, true);

            if (json_last_error()) {
                LoggerService::instance()->warning('An issue while decoding string "' . $encodedData . '" (' . json_last_error_msg() . '). Skipped.');
                continue;
            }

            yield $data;
        }
    }

    public function count()
    {
        $storage = $this->getStorage();
        if ($storage === null) {
            throw new \Exception('Storage is not set');
        }
        return $storage->count();
    }

    public function isRetryAvailable(&$payload)
    {
        if (empty($payload[self::COMMAND_NAME_PARAM])) {
            return false;
        }
        $payload[self::RETRY_PARAM]++;
        if ($payload[self::RETRY_PARAM] >= self::MAX_RETRIES) {
            return false;
        }
        return true;
    }

    public function retry($payload)
    {
        if (!$this->isRetryAvailable($payload)) {
            return false;
        }
        $command = [
            self::PAYLOAD => $payload,
            self::COMMAND => $payload[self::COMMAND_NAME_PARAM],
        ];
        $this->push($command);
        return true;
    }

    public function initRetry(&$payload, $commandName)
    {
        $payload[self::COMMAND_NAME_PARAM] = $commandName;
        $payload[self::RETRY_PARAM] = 0;
    }
}

В методах queueSize(), count(), и других добавлены проверки на null, чтобы убедиться, что _storage инициализирован перед вызовом методов, которые могут привести к ошибкам.
 

Nikolai4598

Пользователь
За классный аватар
Регистрация
25.07.24
Сообщения
11
Симпатии
0
Попробуй заменить код в файле application/Traffic/CommandQueue/Service/DelayedCommandService.php на следующий:
PHP:
<?php
namespace Traffic\CommandQueue\Service;

use Traffic\CommandQueue\QueueStorage\StorageInterface;
use Traffic\Service\AbstractService;
use Traffic\Logging\Service\LoggerService;
use Traffic\Tools\Tools;

class DelayedCommandService extends AbstractService
{
    const PAYLOAD = 'payload';
    const COMMAND = 'command';
    const MAX_RETRIES = 3;
    const RETRY_PARAM = 'retry';
    const COMMAND_NAME_PARAM = 'command';

    private $_storage;
    private $_compression = false;

    public function setStorage(StorageInterface $storage)
    {
        $this->_storage = $storage;
    }

    /**
     * @return StorageInterface
     */
    private function getStorage()
    {
        return $this->_storage;
    }

    public function queueSize()
    {
        $storage = $this->getStorage();
        if ($storage === null) {
            throw new \Exception('Storage is not set');
        }
        return $storage->count();
    }

    public function clean()
    {
        LoggerService::instance()->debug("[DelayedCommandService] clean");
        return $this->getStorage()->clean();
    }

    public function enableCompression()
    {
        return $this->_compression = true;
    }

    public function push($command)
    {
        if (empty($this->_storage)) {
            throw new \Exception('Storage is not set');
        }
        LoggerService::instance()->debug(function () use ($command) {
            $count = $this->queueSize();
            return 'Pushed command: ' . json_encode($command) .' current count ' . $count;
        });

        $command = json_encode(Tools::utf8ize($command), JSON_PARTIAL_OUTPUT_ON_ERROR);

        $status = $this->getStorage()->push($command);

        LoggerService::instance()->debug(function () use ($command) {
            $count = $this->queueSize();
            return 'Pushed. Count ' . $count;
        });

        return $status;
    }

    public function popAll()
    {
        $result = [];
        foreach ($this->pop() as $item) {
            $result[] = $item;
        }
        return $result;
    }

    public function pop()
    {
        foreach ($this->getStorage()->pop() as $encodedData) {
            if (empty($encodedData)) {
                continue;
            }

            $data = json_decode($encodedData, true);

            if (json_last_error()) {
                LoggerService::instance()->warning('An issue while decoding string "' . $encodedData . '" (' . json_last_error_msg() . '). Skipped.');
                continue;
            }

            yield $data;
        }
    }

    public function count()
    {
        $storage = $this->getStorage();
        if ($storage === null) {
            throw new \Exception('Storage is not set');
        }
        return $storage->count();
    }

    public function isRetryAvailable(&$payload)
    {
        if (empty($payload[self::COMMAND_NAME_PARAM])) {
            return false;
        }
        $payload[self::RETRY_PARAM]++;
        if ($payload[self::RETRY_PARAM] >= self::MAX_RETRIES) {
            return false;
        }
        return true;
    }

    public function retry($payload)
    {
        if (!$this->isRetryAvailable($payload)) {
            return false;
        }
        $command = [
            self::PAYLOAD => $payload,
            self::COMMAND => $payload[self::COMMAND_NAME_PARAM],
        ];
        $this->push($command);
        return true;
    }

    public function initRetry(&$payload, $commandName)
    {
        $payload[self::COMMAND_NAME_PARAM] = $commandName;
        $payload[self::RETRY_PARAM] = 0;
    }
}

В методах queueSize(), count(), и других добавлены проверки на null, чтобы убедиться, что _storage инициализирован перед вызовом методов, которые могут привести к ошибкам.
Нечего так и невышло уже 10 раз все перепробываю. переустанавливал куча раз. Уже и незнаю. Что и сказать. После того что вы советуете перестает работать кронос. Выдает ошибк в самой панеле. и куча ошибоу в логах. какойто бред. Решения так и не нашел.
 

Создайте аккаунт или войдите, чтобы комментировать

Вы должны быть участником, чтобы оставлять комментарии

Зарегистрироваться

Создайте учетную запись. Это просто!

Авторизация

Уже есть аккаунт? Авторизуйтесь.

Похожие темы

Ответы
0
Просмотры
852
Драйвер кеширования Redis для Opencart/Ocstore 1.5.x — 3.x Redis — это высокопроизводительное...
Ответы
0
Просмотры
2K
Программа складского учета с веб интерфейсом. Предназначена для использования малым бизнесом с...
Ответы
0
Просмотры
5K
Сверху Снизу