PHP - Silex:致命错误:找不到类

时间:2014-10-15 17:39:18

标签: php apache composer-php silex directadmin

我用Silex制作了一个PHP应用程序。我在笔记本电脑上使用WAMP解决方案与Composer一起开发。

现在,当我上传应用程序(映射'app','src'和'web')并上传数据库时,将config.php更改为正确的数据库凭据我发出composer命令(composer.phar -o安装)以安装供应商依赖项。

在此之前一切正常,Composer制作“供应商”地图并安装依赖项而不会出错。但是,当我访问该网站时,它向我显示错误:

Fatal error: Class 'WanaKo\Provider\Controller\HomeController' not found in /home/wanako/domains/wanako.net/app/app.php on line 37

我该怎么做才能解决这个错误?我必须补充一点,服务器正在运行带有PHP 5.5.16的DirectAdmin,并且我已经创建了一个从'public_html /'到'web /'的符号链接

目录结构是:

/home/wanako/domains/wanako.net/
├── app
├── logs
├── public_ftp
│   └── incoming
├── public_html -> web/
├── src
│   ├── wanako
│   │   ├── provider
│   │   │   └── controller
│   │   └── repository
│   └── views
│       ├── errors
│       └── home
├── vendor
│   ├── composer
│   ├── doctrine
│   │   ├── common
│   │   └── dbal
│   ├── igorw
│   │   └── config-service-provider
│   ├── imagine
│   │   └── imagine
│   ├── ircmaxell
│   │   └── password-compat
│   ├── knplabs
│   │   └── repository-service-provider
│   ├── monolog
│   │   └── monolog
│   ├── neutron
│   │   └── silex-imagine-provider
│   ├── pimple
│   │   └── pimple
│   ├── psr
│   │   └── log
│   ├── silex
│   │   └── silex
│   ├── swiftmailer
│   │   └── swiftmailer
│   ├── symfony
│   │   ├── config
│   │   ├── debug
│   │   ├── event-dispatcher
│   │   ├── filesystem
│   │   ├── form
│   │   ├── http-foundation
│   │   ├── http-kernel
│   │   ├── icu
│   │   ├── intl
│   │   ├── locale
│   │   ├── options-resolver
│   │   ├── property-access
│   │   ├── routing
│   │   ├── security-core
│   │   ├── security-csrf
│   │   ├── translation
│   │   ├── twig-bridge
│   │   └── validator
│   └── twig
│       └── twig
└── web
    ├── css
    ├── font
    ├── images
    └── js

composer.json

{
"name": "Wanako/Wakano.net",
"require": {
            "silex/silex": "1.0.*@dev",
            "twig/twig": ">=1.8,<2.0-dev",
            "doctrine/dbal": "2.*",
            "knplabs/repository-service-provider": "dev-master",
            "symfony/twig-bridge": "~2.1",
            "symfony/form": "~2.1",
            "symfony/validator": "~2.1",
            "symfony/config": "~2.1",
            "symfony/translation": "~2.1",
            "symfony/locale": "~2.1",
            "monolog/monolog": ">=1.0.0",
            "igorw/config-service-provider": "~1.1",
            "swiftmailer/swiftmailer": ">=4.1.2,<4.2-dev",
            "ircmaxell/password-compat": "dev-master",
            "neutron/silex-imagine-provider": "~0.1"
},
"autoload": {
            "psr-0": {
                    "WanaKo": "./src/"
            }
    }
}

app / app.php 的第37行,我有:

$app->mount('/', new WanaKo\Provider\Controller\HomeController());

homecontroller.php (在文件夹src / wanako / provider / controller /中)

<?php

namespace WanaKo\Provider\Controller;

use Silex\Application;
use Silex\ControllerProviderInterface;
use Silex\ControllerCollection;
use Symfony\Component\Validator\Constraints as Assert;

class HomeController implements ControllerProviderInterface {
    $controllers = $app['controllers_factory'];
    // Bind sub-routes
    $controllers->get('/', array($this, 'home'))->method('GET')->bind('home.news');
    return $controllers;
}

public function home(Application $app) {
    // STUFF
}

我对这个没有任何线索。有什么我做错了吗?错误的文件夹结构?我忘记了什么?如果有人需要更多信息,请问。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我相信您必须在正确的情况下为文件夹结构和文件命名,以使psr0正常工作,如下所示:

    src/WanaKo/Provider/Controller/HomeController.php