2016-07-06 1 views
1

Я установил Phalcon на моем сервере Centos 7 с PHP-FPM 5,6

Я следую основным инструкциям в https://docs.phalconphp.com/en/latest/reference/tutorial.html и застревает в начале:

Иногда он отображает правильное «Привет!». сообщение, но я освежил страницу несколько раз, и большую часть времени я получаю следующее сообщение об ошибке:

Fatal error: Access to undeclared static property: Phalcon\Di::$_default in /var/www/vhosts/playerm8.com/httpdocs/public/index.php on line 20

Мой открытый/index.php выглядит следующим образом:

<?php 

use Phalcon\Loader; 
use Phalcon\Mvc\View; 
use Phalcon\Mvc\Application; 
use Phalcon\Di\FactoryDefault; 
use Phalcon\Mvc\Url as UrlProvider; 
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter; 

try { 

    // Register an autoloader 
    $loader = new Loader(); 
    $loader->registerDirs(array(
     '../app/controllers/', 
     '../app/models/' 
    ))->register(); 

    // Create a DI 
    $di = new FactoryDefault() 
; 
    // Setup the view component 
    $di->set('view', function() { 
     $view = new View(); 
     $view->setViewsDir('../app/views/'); 
     return $view; 
    }); 

    // Setup a base URI so that all generated URIs include the "tutorial" folder 
    $di->set('url', function() { 
     $url = new UrlProvider(); 
     $url->setBaseUri('/'); 
     return $url; 
    }); 

    // Handle the request 
    $application = new Application($di); 

    echo $application->handle()->getContent(); 

} catch (\Exception $e) { 
    echo "Exception: ", $e->getMessage(); 
} 

И мои приложения/контроллеры/IndexController.php выглядит следующим образом:

<?php 

use Phalcon\Mvc\Controller; 

class IndexController extends Controller 
{ 

    public function indexAction() 
    { 
     echo "<h1>Hello!</h1>"; 
    } 
} 

Любая помощь будет оценена

+0

Статическое свойство 'Phalcon \ Di :: $ _ default' всегда должно быть определено. Вероятно, что-то не так с вашей сборкой. Но вы можете попробовать '$ di = new FactoryDefault();' с точкой с запятой в той же строке и посмотреть, помогает ли она. Затем переместите строку вверху try-catch. Если он все еще не работает, попробуйте прокомментировать весь ваш код и посмотрите, можете ли вы получить просто '$ di = new \ Phalcon \ DI \ FactoryDefault();' работать (не полагаясь на пространство имен). Если это не соответствует части времени, это сборка. – Ultimater

+0

Почему это будет работать часть времени, а не другая часть звучит очень подозрительно для меня. Это также может быть что-то глупое, как открытие двух версий одного и того же файла и сохранение изменений в неправильном, которые могли бы объяснить несогласованность. – Ultimater

ответ

0

Я Ф.О. и проблема, код был прав, но, видимо, это было как-то связано с Plesk. Я удалил Plesk с сервера и установил Apache, и теперь он работает все время. Спасибо всем, кто ответил :)

 Смежные вопросы

  • Нет связанных вопросов^_^