У меня возникли проблемы с работой Phalcon
Tutorial 1. В конце я клонировал его версию на Github
чтобы убедиться, что я чего-то не упускаю; все еще получая такое же поведение от этого.
Указание браузера на localhost / test, как показано в учебнике, дает: `
"PhalconException: TestController handler class cannot be loaded".
Однако, отправляясь на localhost/test.php
, загружает «Hello!» тестовое сообщение правильно.
Phalcon показан в phpinfo() and get_loaded_extensions()
.
Я получаю это поведение, даже клонировав учебник из
https://github.com/phalcon/tutorial .
Я предполагаю, что apache
неправильно переписывает URL-адреса, как описано на маршрутах Phalconphp, которые не работают , но моя проблема не похожа на ту, что есть там.
Содержимое файлов htaccess:
#/tutorial/.htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
а также
#/tutorial/public/.htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] </IfModule>
Заменить в загрузочном файле index.php
$url->setBaseUri('/tutorial/');
с
$url->setBaseUri('/');
Мой плохой, это не ошибка. Учебник Phalcon, похоже, ожидает, что учебное пособие будет завершено в каталоге под названием / test /, а не в веб-корне. Он не указывает это, поэтому я предположил, что / test приведет к поведению, показанному в учебнике, с проектом в веб-корне.
Вам нужно изменить Dir контроллеров и моделей, если вы запустите localhost / test.php
try { //Register an autoloader $loader = new \Phalcon\Loader(); $loader->registerDirs(array( 'app/controllers/', 'app/models/' ))->register(); //Create a DI $di = new Phalcon\DI\FactoryDefault(); //Setup the view component $di->set('view', function(){ $view = new \Phalcon\Mvc\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 \Phalcon\Mvc\Url(); $url->setBaseUri('/'); return $url; }); //Handle the request $application = new \Phalcon\Mvc\Application($di); echo $application->handle()->getContent();