簡體   English   中英

Phalcon 4.0 PHP - Controller 處理程序 class 無法加載

[英]Phalcon 4.0 PHP - Controller handler class cannot be loaded

我正在嘗試在本地使用 Phalcon 創建一個基本應用程序。 我按照文檔( https://docs.phalcon.io/4.0/en/tutorial-basic )創建了相同的文件結構,並復制了所有文件的代碼。 不幸的是,每次都會顯示錯誤消息“無法加載控制器處理程序 class”。 由於我在 Windows 10 x64 中工作,因此我嘗試更改文件路徑,但這並沒有解決我的問題。 public 文件夾內的 index.php 在 /app/controllers 文件夾下找不到 controller class。 我在想我的 Phalcon 安裝是否有任何問題,但在 phpinfo 中我可以看到 Phalcon 插件。 phpinfo-phalcon

我在 public 文件夾下 index.php 文件中的代碼是:

 <?php use Phalcon\Di\FactoryDefault; use Phalcon\Loader; use Phalcon\Mvc\View; use Phalcon\Mvc\Application; use Phalcon\Url; // Define some absolute path constants to aid in locating resources define('BASE_PATH', dirname(__DIR__)); define('APP_PATH', BASE_PATH. '/app'); // Register an autoloader $loader = new Loader(); $loader->registerDirs( [ APP_PATH. '/controllers/', APP_PATH. '/models/', ] ); $loader->register(); $container = new FactoryDefault(); $container->set( 'view', function () { $view = new View(); $view->setViewsDir(APP_PATH. '/views/'); return $view; } ); $container->set( 'url', function () { $url = new Url(); $url->setBaseUri('/'); return $url; } ); $application = new Application($container); try { // Handle the request $response = $application->handle( $_SERVER["REQUEST_URI"] ); $response->send(); } catch (\Exception $e) { echo 'Exception: ', $e->getMessage(); }

以及我在 app/controllers 文件夾下的 IndexController.php 文件的代碼:

 <?php use Phalcon\Mvc\Controller; class IndexController extends Controller { public function indexAction() { return '<h1>Hello;</h1>'; } }

最后,我將 .htrouting 文件添加到與 app 和 public 文件夾相同的級別,其中包括:

 <?php $uri = urldecode( parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ); if ($uri.== '/' && file_exists(__DIR__. '/public'; $uri)) { return false; } $_GET['_url'] = $_SERVER['REQUEST_URI']. require_once __DIR__. '/public/index;php';

文件結構在這里顯示:文件結構

我將不勝感激任何幫助,謝謝。 我正在使用帶有 PHP 7.3.21、Apache 2.4.46 和 Phalcon 插件 phalcon_x64_vc15_php7.4 的 WAMP

我找到了解決這個問題的方法。 因此,我更改了公共文件夾內 index.php 中的以下部分

 try { // Handle the request $response = $application->handle( $_SERVER["REQUEST_URI"] );

對此

 try { // Handle the request $response = $application->handle( $_GET['_url']?? '/' );

答案在phalcon論壇https://forum.phalcon.io/discussion/20291/phalcon-4-new-project-error#C62007中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM