Error
Class "Radds\PDO" not found Error thrown with message "Class "Radds\PDO" not found" Stacktrace: #16 Error in /sites/dragoart/public_html/module/Utility/Radds/Module.php:220 #15 Radds\Module:Radds\{closure} in /sites/dragoart/public_html/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:642 #14 Laminas\ServiceManager\ServiceManager:doCreate in /sites/dragoart/public_html/vendor/laminas/laminas-servicemanager/src/ServiceManager.php:264 #13 Laminas\ServiceManager\ServiceManager:get in /sites/dragoart/public_html/module/Utility/Radds/src/Service/DataStore/Sphinx/CrudObjectFactory.php:29 #12 Radds\Service\DataStore\Sphinx\CrudObjectFactory:setOptions in /sites/dragoart/public_html/module/Utility/Radds/src/Service/AbstractCrudObjectFactory.php:100 #11 Radds\Service\AbstractCrudObjectFactory:getCrudObj in /sites/dragoart/public_html/module/Artwork/src/Model/AlbumListing.php:71 #10 Artwork\Model\AlbumListing:getCrudObj in /sites/dragoart/public_html/module/Artwork/src/Controller/AlbumPublicListingController.php:121 #9 Artwork\Controller\AlbumPublicListingController:listingAction in /sites/dragoart/public_html/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php:72 #8 Laminas\Mvc\Controller\AbstractActionController:onDispatch in /sites/dragoart/public_html/module/Utility/Nitro/src/DataStructures/AbstractServiceManagerActionController.php:247 #7 Nitro\DataStructures\AbstractServiceManagerActionController:onDispatch in /sites/dragoart/public_html/vendor/laminas/laminas-eventmanager/src/EventManager.php:320 #6 Laminas\EventManager\EventManager:triggerListeners in /sites/dragoart/public_html/vendor/laminas/laminas-eventmanager/src/EventManager.php:178 #5 Laminas\EventManager\EventManager:triggerEventUntil in /sites/dragoart/public_html/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php:105 #4 Laminas\Mvc\Controller\AbstractController:dispatch in /sites/dragoart/public_html/vendor/laminas/laminas-mvc/src/DispatchListener.php:117 #3 Laminas\Mvc\DispatchListener:onDispatch in /sites/dragoart/public_html/vendor/laminas/laminas-eventmanager/src/EventManager.php:320 #2 Laminas\EventManager\EventManager:triggerListeners in /sites/dragoart/public_html/vendor/laminas/laminas-eventmanager/src/EventManager.php:178 #1 Laminas\EventManager\EventManager:triggerEventUntil in /sites/dragoart/public_html/vendor/laminas/laminas-mvc/src/Application.php:319 #0 Laminas\Mvc\Application:run in /sites/dragoart/public_html/public/index.php:234
16
Error
/module/Utility/Radds/Module.php220
15
Radds\Module Radds\{closure}
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php642
14
Laminas\ServiceManager\ServiceManager doCreate
/vendor/laminas/laminas-servicemanager/src/ServiceManager.php264
13
Laminas\ServiceManager\ServiceManager get
/module/Utility/Radds/src/Service/DataStore/Sphinx/CrudObjectFactory.php29
12
Radds\Service\DataStore\Sphinx\CrudObjectFactory setOptions
/module/Utility/Radds/src/Service/AbstractCrudObjectFactory.php100
11
Radds\Service\AbstractCrudObjectFactory getCrudObj
/module/Artwork/src/Model/AlbumListing.php71
10
Artwork\Model\AlbumListing getCrudObj
/module/Artwork/src/Controller/AlbumPublicListingController.php121
9
Artwork\Controller\AlbumPublicListingController listingAction
/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php72
8
Laminas\Mvc\Controller\AbstractActionController onDispatch
/module/Utility/Nitro/src/DataStructures/AbstractServiceManagerActionController.php247
7
Nitro\DataStructures\AbstractServiceManagerActionController onDispatch
/vendor/laminas/laminas-eventmanager/src/EventManager.php320
6
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php178
5
Laminas\EventManager\EventManager triggerEventUntil
/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php105
4
Laminas\Mvc\Controller\AbstractController dispatch
/vendor/laminas/laminas-mvc/src/DispatchListener.php117
3
Laminas\Mvc\DispatchListener onDispatch
/vendor/laminas/laminas-eventmanager/src/EventManager.php320
2
Laminas\EventManager\EventManager triggerListeners
/vendor/laminas/laminas-eventmanager/src/EventManager.php178
1
Laminas\EventManager\EventManager triggerEventUntil
/vendor/laminas/laminas-mvc/src/Application.php319
0
Laminas\Mvc\Application run
/public/index.php234

                    }

                    return $dbh;

                },

                'Radds\Service\DataStore\Sphinx\Connection' => function($sm){

                    //$pdoAuth=$sm->get('Global\Config\Pdo\AuthSphinxSearch');

                    //var_dump($pdoAuth);

                    try {

                        //$dsn="mysql:dbname={$pdoAuth['database']};host={$pdoAuth['hostname']}";

                        $dsn="mysql:host=127.0.0.1;port=9306;";

                        $dbh = new PDO($dsn);

                        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                    } catch (PDOException $e) {

                        die( 'Connection failed: ' . $e->getMessage());

                    }

                    return $dbh;

                },

                Service\DataStore\PDOMySQL\CrudObjectFactory::class => ServiceAwarePseudoConstructorInjector::class,

                'Radds\Service\DataStore\Sphinx\CrudObjectFactory' => ServiceAwarePseudoConstructorInjector::class,

            ),

        );
Arguments
  1. "Class "Radds\PDO" not found"
    
        return $creationCallback();
    }
 
    /**
     * Create a new instance with an already resolved name
     *
     * This is a highly performance sensitive method, do not modify if you have not benchmarked it carefully
     *
     * @return object
     * @throws ServiceNotFoundException If unable to resolve the service.
     * @throws ServiceNotCreatedException If an exception is raised when creating a service.
     * @throws ContainerExceptionInterface If any other error occurs.
     */
    private function doCreate(string $resolvedName, ?array $options = null)
    {
        try {
            if (! isset($this->delegators[$resolvedName])) {
                // Let's create the service by fetching the factory
                $factory = $this->getFactory($resolvedName);
                $object  = $factory($this->creationContext, $resolvedName, $options);
            } else {
                $object = $this->createDelegatorFromName($resolvedName, $options);
            }
        } catch (ContainerExceptionInterface $exception) {
            throw $exception;
        } catch (Exception $exception) {
            throw new ServiceNotCreatedException(sprintf(
                'Service with name "%s" could not be created. Reason: %s',
                $resolvedName,
                $exception->getMessage()
            ), (int) $exception->getCode(), $exception);
        }
 
        foreach ($this->initializers as $initializer) {
            $initializer($this->creationContext, $object);
        }
 
        return $object;
    }
 
Arguments
  1. Laminas\ServiceManager\ServiceManager {#10}
    
  2. "Radds\Service\DataStore\Sphinx\Connection"
    
  3. null
    
        // We now deal with requests which may be aliases.
        $resolvedName = $this->aliases[$name] ?? $name;
 
        // Update shared service information as we checked if the alias was shared before.
        if ($resolvedName !== $name) {
            $sharedService = $this->shared[$resolvedName] ?? $sharedService;
        }
 
        // The following is only true if the requested service is a shared alias.
        $sharedAlias = $sharedService && isset($this->services[$resolvedName]);
 
        // If the alias is configured as a shared service, we are done.
        if ($sharedAlias) {
            $this->services[$name] = $this->services[$resolvedName];
            return $this->services[$resolvedName];
        }
 
        // At this point, we have to create the object.
        // We use the resolved name for that.
        $object = $this->doCreate($resolvedName);
 
        // Cache the object for later, if it is supposed to be shared.
        if ($sharedService) {
            $this->services[$resolvedName] = $object;
        }
 
        // Also cache under the alias name; this allows sharing based on the
        // service name used.
        if ($sharedAlias) {
            $this->services[$name] = $object;
        }
 
        return $object;
    }
 
    /** {@inheritDoc} */
    public function build($name, ?array $options = null)
    {
        // We never cache when using "build".
        $name = $this->aliases[$name] ?? $name;
Arguments
  1. "Radds\Service\DataStore\Sphinx\Connection"
    
    private $transaction=null;

    private $connection =null;
    
    protected function setOptions($crudObj){


//        return $this->sm()->get()->setAdapter($dbConnect->getConnection())
//                                                    ->setDbname($dbConnect->getDbname())
//                                                    ->setBaseCollectionName($baseNameSpace['base_collection_name'])
//                                                    ->setQuery($query);

        if(isset($this->connection) && is_object($this->connection)):


            $crudObj->setConnection($this->connection);

        else:

            $crudObj->setConnection($this->sm()->get('Radds\Service\DataStore\Sphinx\Connection'));

        endif;

    }

    public function setConnection($connection){

        $this->connection=$connection;

        return this;

    }

    protected function getCrudStmtDriverName(){
    
        return 'Sphinx';
        
    }
    
    public function hasTransactionSupport(){
Arguments
  1. "Radds\Service\DataStore\Sphinx\Connection"
    
            
            $this->checkIfValidCrudStmt($crudStmtObj);

        else:

            throw new \Exception(__NAMESPACE__. '\AbstractCrudObjectFactory::getCrudObj(): A CrudStatement could not be located using the key provided "'.$key .'." Check the spelling and try again.');
        
        endif;
        
        //Initialize                    
        $crudStmtObj->setServiceManager($this->sm());

        //The $crudStmtObj will inject itself into the crudObject
        $crudObj = $crudStmtObj->getCrudObject();


        //Set the params from the repository, if any 
        $crudStmtObj->setParams($this->params);
        
        $this->setOptions($crudObj);

        return $crudObj;
        
    }
    
    protected function checkIfValidCrudStmt($potentialCrudStmtObj){

        if( !is_countable($this->crudStmtDriverSpecificInterface) || (count($this->crudStmtDriverSpecificInterface)!==4)) $this->getCrudStmtDriverSpecificInterface();

        $interfacesImplemented = class_implements($potentialCrudStmtObj, true);

        //does the class implement 'Radds\Service\CrudStatementInterface'?
        if(!is_array($interfacesImplemented) || !(in_array('Radds\Service\CrudStatementInterface', $interfacesImplemented))):

            throw new \Exception(__NAMESPACE__. '\AbstractCrudObjectFactory::checkIfValidCrudStmt(): The $crudStmt must implement "Radds\Service\CrudStatementInterface" for it to be considered a valid crudStmt. The object used is of the type "'.get_class($potentialCrudStmtObj).'"');

        //and more importanly does the class implement a driver specific 'Radds\Service\DataStore\#DRIVERNAME#\Create'?
        elseif(!(in_array($this->crudStmtDriverSpecificInterface, $interfacesImplemented))):
                    
               throw new \Exception(__NAMESPACE__. '\AbstractCrudObjectFactory::checkIfValidCrudStmt(): The $crudStmt must implement the following interface "'.$this->crudStmtDriverSpecificInterface.'" for it to be considered a valid crudStmt. The object provided is made up of follwing interfaces "'.implode(', ',$interfacesImplemented).'"');
Arguments
  1. Radds\Service\DataStore\Sphinx\Read {#1105}
    

            $this->relatedSearchText=$searchText;

        endif;

        return $this;


    }

    public function getCrudObj($commandArgBuilder)
    {

        $this->commandArgBuilder=$commandArgBuilder;

        $this->commandArgBuilder->add($this->sm()->get('CommandArgBuilder\Factory\CommandArg\ActionArg'));

        //$commandArgBuilder->add($this->sm()->get('CommandArgBuilder\Factory\CommandArg\SkillLevelArg'));

        $crudObj = $this->cof->getCrudObj('ReadAlbum');

        $crudStmt =$crudObj->getCrudStmt();

        $commitMatchToWhere =false;

        if($this->commandArgBuilder->hasArg('search')):

            $searchArg=$this->commandArgBuilder->getBuiltArg('search');

            if($searchArg->isValid()&&$searchArg->hasSearchText()):

                $searchText = $this->searchText = $searchArg->getSearchText();

                $crudStmt->matchAgainst($searchText)

                ;

                $this->panelText='Search Results for: "' . $searchText . '"';

                $commitMatchToWhere=$this->hasSearchText=true;
Arguments
  1. "ReadAlbum"
    
            ->setVariables([]);

        return $r;

    }

    public function listingAction()
    {

        $page = (int)$this->getEvent()->getRouteMatch()->getParam('page',0);

        $routeArgs=($page>0)?['page'=>$page]:[];

        $this->commandArgBuilder->setBaseUrl($this->url()->fromRoute('album/public/listing', []));

        $pageNumberTitle=($page>1)?' | Page ' . $page : '';

        $service = $this->sm()->get('Artwork\Model\AlbumListing');

        $crudObj = $service->getCrudObj($this->commandArgBuilder);



        $cacheCheck = $this->sm()->get('Cacher\Service\CacheCheck');

        $cacher=$cacheCheck->getCacher();

        if(!$cacheCheck->setKey('album_listing', $service->getCrudStmtString().$page)->isCached()):

            $paginatorAdapter = $this->sm()->get('Radds\Pagination\PaginatorAdapter');

            $paginatorAdapter->setReadCrudObj($crudObj)
                             ->setPostQueryReplacementObject($this->sm()->get('Artwork\Model\AlbumPaginatorItemsReplacer'))
                             ->setPostQueryReplacementObject($this->sm()->get('Artwork\Model\AlbumGeneralListingItemsReplacer'))
            ;

            $paginator = $this->sm()->get('Radds\Pagination\Paginator');

            //POPULATE THE PAGINATOR WITH OPTIONS
            $paginator->setAdapter($paginatorAdapter)
Arguments
  1. CommandArgBuilder\Factory\CommandArgBuilder {#1079}
    
     */
    public function onDispatch(MvcEvent $e)
    {
        $routeMatch = $e->getRouteMatch();
        if (! $routeMatch) {
            /**
             * @todo Determine requirements for when route match is missing.
             *       Potentially allow pulling directly from request metadata?
             */
            throw new DomainException('Missing route matches; unsure how to retrieve action');
        }
 
        $action = $routeMatch->getParam('action', 'not-found');
        $method = static::getMethodFromAction($action);
 
        if (! method_exists($this, $method)) {
            $method = 'notFoundAction';
        }
 
        $actionResponse = $this->$method();
 
        $e->setResult($actionResponse);
 
        return $actionResponse;
    }
}
 
    }
    final protected function setAdmin(\User\Lib\Admin $admin){
        $this->admin=$admin;
        return $this;
    }
    final protected function isAdmin(){
        return (isset($this->admin) && is_object($this->admin))?true:false;
    }
    final protected function isMember(){
        return (isset($this->member) && is_object($this->member))?true:false;
    }

    final public function onDispatch(MvcEvent $e)
    {

        $this->dispatchEvent = $e;

        $this->dispatchEvent($e);

        return parent::onDispatch($e); // TODO: Change the autogenerated stub
    }



    //override if needed: called to delegate a service to createRealService method
    public function di(ContainerInterface $c){
        // do nothing
    }

    //override if needed: called to inject Dependency Injection
    public function getService()
    {
        //do nothing
    }

    //override if needed: called when the controller is being dispatched
    public function dispatchEvent(MvcEvent $e){
        //do nothing

    }
Arguments
  1. Laminas\Mvc\MvcEvent {#431}
    
        }
 
        if ($this->sharedManager) {
            foreach ($this->sharedManager->getListeners($this->identifiers, $name) as $priority => $listeners) {
                $listOfListenersByPriority[$priority][] = $listeners;
            }
        }
 
        // Sort by priority in reverse order
        krsort($listOfListenersByPriority);
 
        // Initial value of stop propagation flag should be false
        $event->stopPropagation(false);
 
        // Execute listeners
        $responses = new ResponseCollection();
        foreach ($listOfListenersByPriority as $listOfListeners) {
            foreach ($listOfListeners as $listeners) {
                foreach ($listeners as $listener) {
                    $response = $listener($event);
                    $responses->push($response);
 
                    // If the event was asked to stop propagating, do so
                    if ($event->propagationIsStopped()) {
                        $responses->setStopped(true);
                        return $responses;
                    }
 
                    // If the result causes our validation callback to return true,
                    // stop propagation
                    if ($callback && $callback($response)) {
                        $responses->setStopped(true);
                        return $responses;
                    }
                }
            }
        }
 
        return $responses;
    }
Arguments
  1. Laminas\Mvc\MvcEvent {#431}
    
            $event->setParams($argv);
        }
 
        return $this->triggerListeners($event, $callback);
    }
 
    /**
     * @inheritDoc
     */
    public function triggerEvent(EventInterface $event)
    {
        return $this->triggerListeners($event);
    }
 
    /**
     * @inheritDoc
     */
    public function triggerEventUntil(callable $callback, EventInterface $event)
    {
        return $this->triggerListeners($event, $callback);
    }
 
    /**
     * @inheritDoc
     */
    public function attach($eventName, callable $listener, $priority = 1)
    {
        if (! is_string($eventName)) {
            throw new Exception\InvalidArgumentException(sprintf(
                '%s expects a string for the event; received %s',
                __METHOD__,
                is_object($eventName) ? $eventName::class : gettype($eventName)
            ));
        }
 
        $this->events[$eventName][(int) $priority][0][] = $listener;
        return $listener;
    }
 
    /**
Arguments
  1. Laminas\Mvc\MvcEvent {#431}
    
  2. Closure($test): bool {#1062 …4}
    
     * @events dispatch.pre, dispatch.post
     * @param  Request $request
     * @param  null|Response $response
     * @return Response|mixed
     */
    public function dispatch(Request $request, Response $response = null)
    {
        $this->request = $request;
        if (! $response) {
            $response = new HttpResponse();
        }
        $this->response = $response;
 
        $e = $this->getEvent();
        $e->setName(MvcEvent::EVENT_DISPATCH);
        $e->setRequest($request);
        $e->setResponse($response);
        $e->setTarget($this);
 
        $result = $this->getEventManager()->triggerEventUntil(static fn($test): bool => $test instanceof Response, $e);
 
        if ($result->stopped()) {
            return $result->last();
        }
 
        return $e->getResult();
    }
 
    /**
     * Get request object
     *
     * @return Request
     */
    public function getRequest()
    {
        if (! $this->request) {
            $this->request = new HttpRequest();
        }
 
        return $this->request;
Arguments
  1. Closure($test): bool {#1062 …4}
    
  2. Laminas\Mvc\MvcEvent {#431}
    
            );
            return $this->complete($return, $e);
        } catch (Throwable $exception) {
            $return = $this->marshalBadControllerEvent($controllerName, $e, $application, $exception);
            return $this->complete($return, $e);
        } catch (Exception $exception) {  // @TODO clean up once PHP 7 requirement is enforced
            $return = $this->marshalBadControllerEvent($controllerName, $e, $application, $exception);
            return $this->complete($return, $e);
        }
 
        if ($controller instanceof InjectApplicationEventInterface) {
            $controller->setEvent($e);
        }
 
        $request  = $e->getRequest();
        $response = $application->getResponse();
        $caughtException = null;
 
        try {
            $return = $controller->dispatch($request, $response);
        } catch (Throwable $ex) {
            $caughtException = $ex;
        } catch (Exception $ex) {  // @TODO clean up once PHP 7 requirement is enforced
            $caughtException = $ex;
        }
 
        if ($caughtException !== null) {
            $e->setName(MvcEvent::EVENT_DISPATCH_ERROR);
            $e->setError($application::ERROR_EXCEPTION);
            $e->setController($controllerName);
            $e->setControllerClass($controller::class);
            $e->setParam('exception', $caughtException);
 
            $return = $application->getEventManager()->triggerEvent($e)->last();
            if (! $return) {
                $return = $e->getResult();
            }
        }
 
        return $this->complete($return, $e);
Arguments
  1. Laminas\Http\PhpEnvironment\Request {#408}
    
  2. Laminas\Http\PhpEnvironment\Response {#418}
    
        }
 
        if ($this->sharedManager) {
            foreach ($this->sharedManager->getListeners($this->identifiers, $name) as $priority => $listeners) {
                $listOfListenersByPriority[$priority][] = $listeners;
            }
        }
 
        // Sort by priority in reverse order
        krsort($listOfListenersByPriority);
 
        // Initial value of stop propagation flag should be false
        $event->stopPropagation(false);
 
        // Execute listeners
        $responses = new ResponseCollection();
        foreach ($listOfListenersByPriority as $listOfListeners) {
            foreach ($listOfListeners as $listeners) {
                foreach ($listeners as $listener) {
                    $response = $listener($event);
                    $responses->push($response);
 
                    // If the event was asked to stop propagating, do so
                    if ($event->propagationIsStopped()) {
                        $responses->setStopped(true);
                        return $responses;
                    }
 
                    // If the result causes our validation callback to return true,
                    // stop propagation
                    if ($callback && $callback($response)) {
                        $responses->setStopped(true);
                        return $responses;
                    }
                }
            }
        }
 
        return $responses;
    }
Arguments
  1. Laminas\Mvc\MvcEvent {#431}
    
            $event->setParams($argv);
        }
 
        return $this->triggerListeners($event, $callback);
    }
 
    /**
     * @inheritDoc
     */
    public function triggerEvent(EventInterface $event)
    {
        return $this->triggerListeners($event);
    }
 
    /**
     * @inheritDoc
     */
    public function triggerEventUntil(callable $callback, EventInterface $event)
    {
        return $this->triggerListeners($event, $callback);
    }
 
    /**
     * @inheritDoc
     */
    public function attach($eventName, callable $listener, $priority = 1)
    {
        if (! is_string($eventName)) {
            throw new Exception\InvalidArgumentException(sprintf(
                '%s expects a string for the event; received %s',
                __METHOD__,
                is_object($eventName) ? $eventName::class : gettype($eventName)
            ));
        }
 
        $this->events[$eventName][(int) $priority][0][] = $listener;
        return $listener;
    }
 
    /**
Arguments
  1. Laminas\Mvc\MvcEvent {#431}
    
  2. Closure($r): bool {#2 …4}
    
            $response = $result->last();
            if ($response instanceof ResponseInterface) {
                $event->setName(MvcEvent::EVENT_FINISH);
                $event->setTarget($this);
                $event->setResponse($response);
                $event->stopPropagation(false); // Clear before triggering
                $events->triggerEvent($event);
                $this->response = $response;
                return $this;
            }
        }
 
        if ($event->getError()) {
            return $this->completeRequest($event);
        }
 
        // Trigger dispatch event
        $event->setName(MvcEvent::EVENT_DISPATCH);
        $event->stopPropagation(false); // Clear before triggering
        $result = $events->triggerEventUntil($shortCircuit, $event);
 
        // Complete response
        $response = $result->last();
        if ($response instanceof ResponseInterface) {
            $event->setName(MvcEvent::EVENT_FINISH);
            $event->setTarget($this);
            $event->setResponse($response);
            $event->stopPropagation(false); // Clear before triggering
            $events->triggerEvent($event);
            $this->response = $response;
            return $this;
        }
 
        $response = $this->response;
        $event->setResponse($response);
        return $this->completeRequest($event);
    }
 
    /**
     * Complete the request
Arguments
  1. Closure($r): bool {#2 …4}
    
  2. Laminas\Mvc\MvcEvent {#431}
    

    } catch(Exception $e) {

        //var_dump(debug_backtrace());

        $gtgggg=[];

        $gtgggg['err']=$e->getMessage();
        $gtgggg['line']=$e->getLine();
        $gtgggg['file']=$e->getFile();
        $gtgggg['trace']=$e->getTrace();
        $gtgggg['code']=$e->getCode();
        d($gtgggg);

    }


else:

    Application::init(require 'config/' . PROJECT_ID_STRING . '/application.config.php')->run();
endif;
 

Environment & details:

Key Value
a
"t"
dwt
"do"
alv
"alb"
empty
empty
empty
Key Value
__Laminas
array:2 [
  "_REQUEST_ACCESS_TIME" => 1711654290.9004
  "_VALID" => array:1 [
    "Laminas\Session\Validator\Id" => "894ca211cda78a01bb5b872a0070c31f"
  ]
]
user
Laminas\Stdlib\ArrayObject {#667}
user_session
Laminas\Stdlib\ArrayObject {#1083}
Key Value
APPLICATION_ENV
"production"
CONTEXT_DOCUMENT_ROOT
"/sites/dragoart/public_html/public"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/sites/dragoart/public_html/public"
GATEWAY_INTERFACE
"CGI/1.1"
H2PUSH
"off"
H2_PUSH
"off"
H2_PUSHED
""
H2_PUSHED_ON
""
H2_STREAM_ID
"3"
H2_STREAM_TAG
"29732-3470-3"
HTTP2
"on"
HTTPS
"on"
HTTP_ACCEPT
"*/*"
HTTP_HOST
"dragoart.com"
HTTP_REFERER
"https://drawinghub.com/album/public/listing/?a=t&dwt=do&alv=alb"
HTTP_USER_AGENT
"claudebot"
HTTP_X_HTTPS
"1"
PATH
"/bin:/usr/bin"
PROJECT_ID_STRING
"drawingtutorials"
QUERY_STRING
"a=t&dwt=do&alv=alb"
REDIRECT_APPLICATION_ENV
"production"
REDIRECT_H2PUSH
"off"
REDIRECT_H2_PUSH
"off"
REDIRECT_H2_PUSHED
""
REDIRECT_H2_PUSHED_ON
""
REDIRECT_H2_STREAM_ID
"3"
REDIRECT_H2_STREAM_TAG
"29732-3470-3"
REDIRECT_HTTP2
"on"
REDIRECT_HTTPS
"on"
REDIRECT_PROJECT_ID_STRING
"drawingtutorials"
REDIRECT_QUERY_STRING
"a=t&dwt=do&alv=alb"
REDIRECT_SCRIPT_URI
"https://dragoart.com/album/public/listing/"
REDIRECT_SCRIPT_URL
"/album/public/listing/"
REDIRECT_SITE_SERVER_NAME
"https://dragoart.com"
REDIRECT_SSL_TLS_SNI
"dragoart.com"
REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"ZgXFkptY9zM_GqqsmVzFbwABzxM"
REDIRECT_URL
"/album/public/listing/"
REMOTE_ADDR
"3.81.30.41"
REMOTE_PORT
"54434"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"https"
REQUEST_URI
"/album/public/listing/?a=t&dwt=do&alv=alb"
SCRIPT_FILENAME
"/sites/dragoart/public_html/public/index.php"
SCRIPT_NAME
"/index.php"
SCRIPT_URI
"https://dragoart.com/album/public/listing/"
SCRIPT_URL
"/album/public/listing/"
SERVER_ADDR
"51.81.245.42"
SERVER_ADMIN
"webmaster@dragoart.com"
SERVER_NAME
"dragoart.com"
SERVER_PORT
"443"
SERVER_PROTOCOL
"HTTP/2.0"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SITE_SERVER_NAME
"https://dragoart.com"
SSL_TLS_SNI
"dragoart.com"
TZ
"UTC"
UNIQUE_ID
"ZgXFkptY9zM_GqqsmVzFbwABzxM"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1711654290.7833
REQUEST_TIME
1711654290
argv
array:1 [
  0 => "a=t&dwt=do&alv=alb"
]
argc
1
empty
0. Whoops\Handler\PrettyPageHandler