Deprecated: Return type of Whoops\Exception\FrameCollection::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 101

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 110

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 119

Deprecated: Return type of Whoops\Exception\FrameCollection::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 128

Deprecated: Return type of Whoops\Exception\FrameCollection::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 92

Deprecated: Whoops\Exception\FrameCollection implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 20

Deprecated: Return type of Whoops\Exception\FrameCollection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\FrameCollection.php on line 137

Deprecated: Whoops\Exception\Frame implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\vendor\filp\whoops\src\Whoops\Exception\Frame.php on line 12

Deprecated: App\Models\Panel\Cart::add(): Optional parameter $quantity declared before required parameter $session_id is implicitly treated as a required parameter in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Models\Panel\Cart.php on line 17

Deprecated: App\Models\Panel\Cart::add(): Optional parameter $option declared before required parameter $session_id is implicitly treated as a required parameter in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Models\Panel\Cart.php on line 17

Deprecated: App\Models\Panel\Cart::add(): Optional parameter $recurring_id declared before required parameter $session_id is implicitly treated as a required parameter in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Models\Panel\Cart.php on line 17

Deprecated: App\Models\Panel\Cart::add(): Optional parameter $customer_id declared before required parameter $session_id is implicitly treated as a required parameter in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Models\Panel\Cart.php on line 17
Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_DEPRECATED)
setcookie(): Passing null to parameter #2 ($value) of type string is deprecated Whoops\Exception\ErrorException thrown with message "setcookie(): Passing null to parameter #2 ($value) of type string is deprecated" Stacktrace: #8 Whoops\Exception\ErrorException in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Libs\Cart\Cart.php:26 #7 setcookie in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Libs\Cart\Cart.php:26 #6 App\Libs\Cart\Cart:__construct in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Facades\Facade.php:84 #5 System\Facades\Facade:__callStatic in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Controllers\Shop\Basket.php:121 #4 App\Controllers\Shop\Basket:getProducts in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Controllers\Shop\Basket.php:27 #3 App\Controllers\Shop\Basket:index in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Libs\Router\Router.php:317 #2 call_user_func_array in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Libs\Router\Router.php:317 #1 System\Libs\Router\Router:run in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Kernel\Kernel.php:35 #0 System\Kernel\Kernel:__construct in C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\index.php:22
Stack frames (9)
8
Whoops\Exception\ErrorException
…\App\Libs\Cart\Cart.php26
7
setcookie
…\App\Libs\Cart\Cart.php26
6
App\Libs\Cart\Cart __construct
…\System\Facades\Facade.php84
5
System\Facades\Facade __callStatic
…\App\Controllers\Shop\Basket.php121
4
App\Controllers\Shop\Basket getProducts
…\App\Controllers\Shop\Basket.php27
3
App\Controllers\Shop\Basket index
…\System\Libs\Router\Router.php317
2
call_user_func_array
…\System\Libs\Router\Router.php317
1
System\Libs\Router\Router run
…\System\Kernel\Kernel.php35
0
System\Kernel\Kernel __construct
…\index.php22
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Libs\Cart\Cart.php
use Settings;
use Tax;
use Weight;
class Cart
{
    private $data = array();
    private $model;
    protected $session_id;
 
    public function __construct()
    {
        $this->model = Model::namespace("Panel")->run("Cart");
 
        // Remove all the expired carts with no customer ID
        $this->model->expiredClear();
        if (isset($_COOKIE[config('app.session.name')])) {
            $session_id = $_COOKIE[config('app.session.name')];
        } else {
            $session_id = '';
            setcookie(config('app.session.name'), $this->getSessionId(),time() + (ini_get('session.cookie_lifetime')*60*60), ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
        }
        $this->start($session_id);
        dd($_COOKIE);
        dd(time() + (ini_get('session.cookie_lifetime')*60*60));
        dd(ini_get('session.cookie_path'));
        dd(var_dump(ini_get('session.cookie_domain')));
 
        var_dump($this->session_id);
        dd(strtotime('+1 hours'),true);
 
        if (Customer::getUserId()) {
            // We want to change the session ID on all the old items in the customers cart
            $where = [
                'customer_id' => (int) Customer::getUserId()
            ];
            $data = ['session_id' => $this->getSessionId()];
            $this->model->update($where,$data);
            // Once the customer is logged in we want to update the customers cart
            $where = [
                'api_id' => 0,
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Libs\Cart\Cart.php
use Settings;
use Tax;
use Weight;
class Cart
{
    private $data = array();
    private $model;
    protected $session_id;
 
    public function __construct()
    {
        $this->model = Model::namespace("Panel")->run("Cart");
 
        // Remove all the expired carts with no customer ID
        $this->model->expiredClear();
        if (isset($_COOKIE[config('app.session.name')])) {
            $session_id = $_COOKIE[config('app.session.name')];
        } else {
            $session_id = '';
            setcookie(config('app.session.name'), $this->getSessionId(),time() + (ini_get('session.cookie_lifetime')*60*60), ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
        }
        $this->start($session_id);
        dd($_COOKIE);
        dd(time() + (ini_get('session.cookie_lifetime')*60*60));
        dd(ini_get('session.cookie_path'));
        dd(var_dump(ini_get('session.cookie_domain')));
 
        var_dump($this->session_id);
        dd(strtotime('+1 hours'),true);
 
        if (Customer::getUserId()) {
            // We want to change the session ID on all the old items in the customers cart
            $where = [
                'customer_id' => (int) Customer::getUserId()
            ];
            $data = ['session_id' => $this->getSessionId()];
            $this->model->update($where,$data);
            // Once the customer is logged in we want to update the customers cart
            $where = [
                'api_id' => 0,
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Facades\Facade.php
    }

    /**
     * Call Methods in Application Object
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    public static function __callStatic($method, $args)
    {
        // Get Facade Accessor
        $accessor     = static::getFacadeAccessor();

        // Get Service Provider
        $provider     = static::resolveInstance($accessor);

        // Get Instance of Service Provider If it doesn't exist
        if (!array_key_exists($accessor, static::$createdInstances)) {
            static::$createdInstances[$accessor] = new $provider;
        }
        
        return call_user_func_array([static::$createdInstances[$accessor], $method], $args);
    }
    
}
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Controllers\Shop\Basket.php
        }

    }
    public function remove($cart_id)
    {
        if (Request::isMethod('POST') && Request::isAjax()) {
            $remove = Cart::remove($cart_id);
            $message["code"] = false;
            if ($remove) {
                $message["code"] = true;
            }
            echo json_encode($message);
        }
    }
    public function getProducts()
    {
        $data['error'] = [];
        $data['products'] = [];
        $data['totals'] = [];
        if (Cart::hasProducts() || !empty($_SESSION['vouchers'])) {
            if (!Cart::hasStock() && (!Settings::get('config_stock_checkout') || Settings::get('config_stock_warning'))) {
                $data['error'][] = lang('general','error_stock');
            }

            if (Settings::get('config_customer_price') && !Customer::isLoggedIn()) {
                $data['error'][] = 'login';
            }

            if (Settings::get('config_cart_weight')) {
                $data['weight'] = Weight::format(Cart::getWeight(), Settings::get('config_weight_class_id'),lang('general','decimal_point'),lang('general','thousand_point'));
            } else {
                $data['weight'] = '';
            }

            $products = Cart::getProducts();

            foreach ($products as $product) {
                $product_total = 0;

                foreach ($products as $product_2) {
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\App\Controllers\Shop\Basket.php
use Settings;
use Customer;
use Import;
use Language;
use Image;
use Currency;
use Tax;
use Weight;
use Session;
use DB;
class Basket extends BaseController
{
    public function __construct()
    {
        parent::__construct();
        Language::setLanguageId(3);
    }
    public function index()
    {
        $this->data = array_merge($this->data,$this->getProducts());
        View::render('basket.index',$this->data);
    }
    public function addProduct($product_id)
    {
        if (Request::isAjax() && Request::isMethod('POST')) {
            $product_info =Model::namespace("Shop")->run("Product")->getProduct($product_id);
            $quantity = Request::post('quantity');

            if ($product_info) {
                if (Request::post('option')) {
                    $option = array_filter(Request::post('option'));
                } else {
                    $option = array();
                }

                $product_options = Model::namespace("Shop")->run("Product")->getProductOptions($product_id);

                foreach ($product_options as $product_option) {
                    if ($product_option['required'] && empty($option[$product_option['product_option_id']])) {
                        $json["code"] = false;
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Libs\Router\Router.php
                        $params = array_merge($params, $val["params"]);
                    }
                    // Checking middlewares
                    if (array_key_exists('middlewares', $val)) {
                        foreach ($val['middlewares'] as $midKey => $midVal) {
                            list($controller, $method) = explode('@', $midVal['callback']);
 
                            if (class_exists($controller)) {
                                call_user_func_array([new $controller, $method], []);
                            }
                        }
                    }
 
                    if (is_callable($val['callback'])) {
                        call_user_func_array($val['callback'], array_values($params));
                    } elseif (stripos($val['callback'], '@') !== false) {
                        list($controller, $method) = explode('@', $val['callback']);
 
                        if (class_exists($controller)) {
                            call_user_func_array([new $controller, $method], array_values($params));
                        } else {
                            self::pageNotFound();
                        }
                    }
 
                    break;
                }
            }
        }
 
        if ($matched === 0) {
            self::pageNotFound();
        }
    }
 
    /**
    * Check Domain
    *
    * @param array $params
    * @return bool
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Libs\Router\Router.php
                        $params = array_merge($params, $val["params"]);
                    }
                    // Checking middlewares
                    if (array_key_exists('middlewares', $val)) {
                        foreach ($val['middlewares'] as $midKey => $midVal) {
                            list($controller, $method) = explode('@', $midVal['callback']);
 
                            if (class_exists($controller)) {
                                call_user_func_array([new $controller, $method], []);
                            }
                        }
                    }
 
                    if (is_callable($val['callback'])) {
                        call_user_func_array($val['callback'], array_values($params));
                    } elseif (stripos($val['callback'], '@') !== false) {
                        list($controller, $method) = explode('@', $val['callback']);
 
                        if (class_exists($controller)) {
                            call_user_func_array([new $controller, $method], array_values($params));
                        } else {
                            self::pageNotFound();
                        }
                    }
 
                    break;
                }
            }
        }
 
        if ($matched === 0) {
            self::pageNotFound();
        }
    }
 
    /**
    * Check Domain
    *
    * @param array $params
    * @return bool
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\System\Kernel\Kernel.php
use System\Facades\Facade;
use Whoops\Run as WhoopsRun;
use Whoops\Handler\PrettyPageHandler as WhoopsPrettyPageHandler;

class Kernel
{

    public function __construct()
    {
        // Initialize Whoops Error Handler
        $this->initWhoops();

        // Initialize Config
        $this->initApplications();

        // Getting Routes
        Import::config('routes');

        // Starting Router
        Router::run();
    }

    /**
     * Whoops Initializer
     *
     * @return object
     */
    private function initWhoops()
    {
        $whoops = new WhoopsRun;
        $whoops->pushHandler(new WhoopsPrettyPageHandler);
        $whoops->register();

        return $this;
    }

    /**
     * Application Initializer
     *
     * @return void
C:\inetpub\vhosts\ecom.teknolobi.com\httpdocs\index.php
 * Titan-2 Mini Framework
 * Simple and Modern Web Application Framework
 *
 * Author     : Turan Karatuğ
 * Web         : http://www.titanphp.com
 * Docs     : http://kilavuz.titanphp.com
 * Version     : 2.2.0
 * Github    : http://github.com/tkaratug/titan2
 * License    : MIT
 *
 *************************************************/

// Require Composer Autoload
require_once __DIR__ . '/vendor/autoload.php';

// Require Starter
require_once __DIR__ . '/System/Kernel/Starter.php';

// Run Kernel
new System\Kernel\Kernel();
 

Environment & details:

Key Value
url basket
empty
empty
Key Value
PHPSESSID 2da59ff5e52636deadfd14b86bc2ecf3
Key Value
session_hash f8360735652de661d485561c23a7056d
lang 3
currency GBP
currency_id 1
7572559ca86e781ba8fe8073a0b725c6 tr
Key Value
_FCGI_X_PIPE_ \\.\pipe\IISFCGI-49e7337f-13a6-47cc-b782-3aa95fdda249
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Windows\system32\config\systemprofile\AppData\Roaming
APP_POOL_CONFIG C:\inetpub\temp\apppools\ecom.teknolobi.com(domain)(pool)\ecom.teknolobi.com(domain)(pool).config
APP_POOL_ID ecom.teknolobi.com(domain)(pool)
CommonProgramFiles C:\Program Files\Common Files
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
CommonProgramW6432 C:\Program Files\Common Files
COMPUTERNAME S2058944
ComSpec C:\Windows\system32\cmd.exe
CURL_CA_BUNDLE C:\Program Files\PostgreSQL\18\ssl\certs\ca-bundle.crt
GDAL_DATA C:\Program Files\PostgreSQL\18\gdal-data
LOCALAPPDATA C:\Windows\system32\config\systemprofile\AppData\Local
MAILENABLE_PATH C:\PROGRA~2\MAILEN~1
NUMBER_OF_PROCESSORS 8
OS Windows_NT
Path C:\Program Files (x86)\Mail Enable\BIN;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Mail Enable\BIN64;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\PuTTY\;C:\Program Files\nodejs\;C:\Program Files (x86)\Plesk\ctl;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Windows\system32\config\systemprofile\AppData\Roaming\npm
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
plesk_bin C:\Program Files (x86)\Plesk\admin\bin
plesk_bin64 C:\Program Files (x86)\Plesk\admin\bin64
plesk_cli C:\Program Files (x86)\Plesk\bin
plesk_data C:\Program Files (x86)\Plesk\
plesk_dir C:\Program Files (x86)\Plesk\
plesk_vhosts C:\Inetpub\vhosts\
POSTGIS_ENABLE_OUTDB_RASTERS 1
POSTGIS_GDAL_ENABLED_DRIVERS GTiff PNG JPEG GIF XYZ DTED USGSDEM AAIGrid
PROCESSOR_ARCHITECTURE AMD64
PROCESSOR_IDENTIFIER Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
PROCESSOR_LEVEL 6
PROCESSOR_REVISION 3a09
ProgramData C:\ProgramData
ProgramFiles C:\Program Files
ProgramFiles(x86) C:\Program Files (x86)
ProgramW6432 C:\Program Files
PROJ_LIB C:\Program Files\PostgreSQL\18\share\contrib\postgis-3.6\proj
PSModulePath C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\PowerShell\Modules\
PUBLIC C:\Users\Public
SystemDrive C:
SystemRoot C:\Windows
TEMP C:\Windows\TEMP
TMP C:\Windows\TEMP
USERDOMAIN WORKGROUP
USERNAME S2058944$
USERPROFILE C:\Windows\system32\config\systemprofile
VBOX_MSI_INSTALL_PATH C:\Program Files\Oracle\VirtualBox\
windir C:\Windows
ORIG_PATH_INFO /index.php
URL /index.php
SERVER_SOFTWARE Microsoft-IIS/10.0
SERVER_PROTOCOL HTTP/1.1
SERVER_PORT_SECURE 1
SERVER_PORT 443
SERVER_NAME ecom.teknolobi.com
SCRIPT_NAME /index.php
SCRIPT_FILENAME C:\Inetpub\vhosts\ecom.teknolobi.com\httpdocs\index.php
REQUEST_URI /basket
REQUEST_METHOD GET
REMOTE_USER
REMOTE_PORT 46685
REMOTE_HOST 216.73.217.13
REMOTE_ADDR 216.73.217.13
QUERY_STRING url=basket
PATH_TRANSLATED C:\Inetpub\vhosts\ecom.teknolobi.com\httpdocs\index.php
LOGON_USER
LOCAL_ADDR 62.212.85.212
INSTANCE_META_PATH /LM/W3SVC/45
INSTANCE_NAME ECOM.TEKNOLOBI.COM
INSTANCE_ID 45
HTTPS_SERVER_SUBJECT CN=ecom.teknolobi.com
HTTPS_SERVER_ISSUER C=US, O=Let's Encrypt, CN=YR1
HTTPS_SECRETKEYSIZE 2048
HTTPS_KEYSIZE 256
HTTPS on
GATEWAY_INTERFACE CGI/1.1
DOCUMENT_ROOT C:\Inetpub\vhosts\ecom.teknolobi.com\httpdocs
CONTENT_TYPE
CONTENT_LENGTH 0
CERT_SUBJECT
CERT_SERIALNUMBER
CERT_ISSUER
CERT_FLAGS
CERT_COOKIE
AUTH_USER
AUTH_PASSWORD
AUTH_TYPE
APPL_PHYSICAL_PATH C:\Inetpub\vhosts\ecom.teknolobi.com\httpdocs\
APPL_MD_PATH /LM/W3SVC/45/ROOT
WEBSOCKET_VERSION 13
IIS_UrlRewriteModule 7,1,1993,2336
UNENCODED_URL /basket
IIS_WasUrlRewritten 1
HTTP_X_ORIGINAL_URL /basket
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_HOST ecom.teknolobi.com
HTTP_COOKIE PHPSESSID=2da59ff5e52636deadfd14b86bc2ecf3
HTTP_ACCEPT_ENCODING gzip, br, zstd, deflate
HTTP_ACCEPT */*
HTTP_CONTENT_LENGTH 0
HTTP_CONNECTION close
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1793480364.0862
REQUEST_TIME 1793480364
empty
0. Whoops\Handler\PrettyPageHandler