We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

Browser access of new phalcon project with xampp giving error

after completion of xampp , php, phalcon installation. I've create a new project under htdocs in /opt/lampp/ and tried to access it from browser as localhost/myapp but getting following error Fatal error: Using $this when not in object context in /opt/lampp/htdocs/myapp/app/config/services.php on line 34

I'm getting this error whether I tried it with XAMPP or without XAMPP.

Maybe show us code ? Im guessing you installed phalcon 2.0.x and trying to use $this in service closure ?

edited Sep '16

I didn't write a single piece of code there. It's just the part of initial phalcon generated code after I've executed

cd /opt/lampp/htdocs , phalcon create-project myapp

and after that I tried to access /localhost/myapp and was getting the above mentioned error message

Fatal error: Using $this when not in object context in /opt/lampp/htdocs/myapp/app/config/services.php on line 34

Anyway from my phpinfo , the below is phalcon description phalcon Phalcon Framework enabled Phalcon Version 1.3.4 and php version is 5.5.6 and phalcon generated myapp/app/config/services.php file is as follows <?php use Phalcon\Mvc\View; use Phalcon\Mvc\View\Engine\Php as PhpEngine; use Phalcon\Mvc\Url as UrlResolver; use Phalcon\Mvc\View\Engine\Volt as VoltEngine; use Phalcon\Mvc\Model\Metadata\Memory as MetaDataAdapter; use Phalcon\Session\Adapter\Files as SessionAdapter; use Phalcon\Flash\Direct as Flash;

/*

  • Shared configuration service */

$di->setShared('config', function () { return include APP_PATH . "/config/config.php"; });

/*

  • The URL component is used to generate all kind of urls in the application */

$di->setShared('url', function () { $config = $this->getConfig();

$url = new UrlResolver();
$url->setBaseUri($config->application->baseUri);

return $url;

});

/*

  • Setting up the view component */

$di->setShared('view', function () { $config = $this->getConfig();

$view = new View();
$view->setDI($this);
$view->setViewsDir($config->application->viewsDir);

$view->registerEngines([
    '.volt' => function ($view) {
        $config = $this->getConfig();

        $volt = new VoltEngine($view, $this);

        $volt->setOptions([
            'compiledPath' => $config->application->cacheDir,
            'compiledSeparator' => '_'
        ]);

        return $volt;
    },
    '.phtml' => PhpEngine::class

]);

return $view;

});

/*

  • Database connection is created based in the parameters defined in the configuration file */

$di->setShared('db', function () { $config = $this->getConfig();

$class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
$connection = new $class([
    'host'     => $config->database->host,
    'username' => $config->database->username,
    'password' => $config->database->password,
    'dbname'   => $config->database->dbname,
    'charset'  => $config->database->charset
]);

return $connection;

});

/*

  • If the configuration specify the use of metadata adapter use it or use memory otherwise */

$di->setShared('modelsMetadata', function () { return new MetaDataAdapter(); });

/*

  • Register the session flash service with the Twitter Bootstrap classes */

$di->set('flash', function () { return new Flash([ 'error' => 'alert alert-danger', 'success' => 'alert alert-success', 'notice' => 'alert alert-info', 'warning' => 'alert alert-warning' ]); });

/*

  • Start the session the first time some component request the session service */

$di->setShared('session', function () { $session = new SessionAdapter(); $session->start();

return $session;

});

edited Sep '16

Phalcon 1.3.4 is not longer supported. You have generated code from phalcon devtools for phalcon 3.0.x. This is why it's not working.

Update your phalcon or change devtools to version which is working with phalcon 1.3.4. You should just update your phalcon because you have ancient version.