Я установил 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>";
}
}
Любая помощь будет оценена
Статическое свойство 'Phalcon \ Di :: $ _ default' всегда должно быть определено. Вероятно, что-то не так с вашей сборкой. Но вы можете попробовать '$ di = new FactoryDefault();' с точкой с запятой в той же строке и посмотреть, помогает ли она. Затем переместите строку вверху try-catch. Если он все еще не работает, попробуйте прокомментировать весь ваш код и посмотрите, можете ли вы получить просто '$ di = new \ Phalcon \ DI \ FactoryDefault();' работать (не полагаясь на пространство имен). Если это не соответствует части времени, это сборка. – Ultimater
Почему это будет работать часть времени, а не другая часть звучит очень подозрительно для меня. Это также может быть что-то глупое, как открытие двух версий одного и того же файла и сохранение изменений в неправильном, которые могли бы объяснить несогласованность. – Ultimater