【问题标题】:Docker php with composer PSR-4带有作曲家 PSR-4 的 Docker php
【发布时间】:2016-10-06 20:49:28
【问题描述】:

我正在尝试在我的 nas 上使用 docker 发布我的网页。但是不能让 PSR-4 工作,它不会通过命名空间找到控制器。一切都在我的流浪盒子上工作。但只要我不扩展一个类它就不会中断

哎呀\异常\ErrorException(E_ERROR)类 'Rsubscribe\Controllers\BaseController' 未找到

bootstrap/start.php

require(__DIR__ . "/../vendor/autoload.php");
session_start();  
$router = new AltoRouter();

基础控制器

<?php
namespace Rsubscribe\Controllers;

use duncan3dc\Laravel\BladeInstance;

class BaseController{
    protected $blade;

    public function __construct()
    {
        $this->blade = new BladeInstance("/var/www/views", "/var/www/cache/views");
    }
}

页面控制器

class PageController extends BaseController
{
    public function getShowHomePage()
    {
        echo $this->blade->render("home");
    }

    public function getMoviePage()
    {
        echo $this->blade->render('movies');
    }
}

路线:

<?php        
    use duncan3dc\Laravel\BladeInstance; // Temp
    $router->map("GET", "/", "Rsubscribe\controllers\PageController@getShowHomePage", "home");
    $router->map("GET", "/home", "Rsubscribe\controllers\PageController@getShowHomePage", "home_2");
    $router->map("GET", "/movies", "Rsubscribe\controllers\PageController@getMoviePage", "movies");

composer.json

 .....
 .....
 "autoload": {
        "psr-4": {"Rsubscribe\\": "src/"}
    }

【问题讨论】:

  • 你运行作曲家更新/安装了吗?
  • 是的,已经完成了
  • 我只有在没有控制器的情况下通过我的路由文件才能让它工作,但我不想这样做。
  • 你能发布命名空​​间和使用PageController的一部分吗?
  • 找到了问题所在,控制器的命名空间必须是小写的文件夹名称

标签: php docker composer-php psr-4


【解决方案1】:

问题是命名空间在linux服务器上运行时区分大小写,但由于某种原因在我的osx机器上运行时不区分大小写。文件夹是小写的,因此在命名空间中也必须是小写。

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 2017-01-27
    • 2016-03-31
    • 2014-01-10
    • 1970-01-01
    • 2019-09-22
    • 2016-10-24
    • 2017-01-02
    相关资源
    最近更新 更多