为什么composer autoload在macOS Docker容器上不起作用?

为什么composer autoload在macOS Docker容器上不起作用?,macos,docker-compose,composer-php,autoload,Macos,Docker Compose,Composer Php,Autoload,文件结构如下: index.php composer.json composer.lock -lib --books ---SearchClient.php (contains class books\SearchClient 以下docker-compose.yml+PHP在Windows上工作: { "name" : "keithdavis/books", "description" : "", "version"

文件结构如下:

index.php
composer.json
composer.lock
-lib
--books
---SearchClient.php (contains class books\SearchClient
以下docker-compose.yml+PHP在Windows上工作:

{
    "name"             : "keithdavis/books",
    "description"      : "",
    "version"          : "0.1",
    "minimum-stability": "beta",
    "require"          : {
        "ext-curl"         : "*",
        "ext-json"         : "*",
        "guzzlehttp/guzzle": "^6.3"
    },
    "autoload"         : {
        "psr-4": {
            "books\\": "lib"
        }
    }
}
在调试中,似乎路径“lib”是问题所在,但我尝试了“/lib”,但这也不起作用。我想也许我的作曲家安装不正确。我在Windows上是一名经验丰富的PHP开发人员,但对Mac来说相对较新,因此我对在Mac上安装Composer的最佳方式并不十分了解。我在全球范围内遵循了这些指示:


查看文件结构,搜索客户端类的名称空间需要
namespace books\books

这是因为您正在lib文件夹上设置名称空间。不必在名称空间中使用book两次,您可以通过添加

{
    "name"             : "keithdavis/books",
    "description"      : "",
    "version"          : "0.1",
    "minimum-stability": "beta",
    "require"          : {
        "ext-curl"         : "*",
        "ext-json"         : "*",
        "guzzlehttp/guzzle": "^6.3"
    },
    "autoload"         : {
        "psr-4": {
            "books\\": "lib/books"
        }
    }
}
确保在更改自动加载时运行
composer dumpautoload
,以便重建名称空间


希望这能有所帮助。

我不明白为什么这在Windows上会起作用,但您的自动加载配置看起来应该是这样的:
books\\”:“lib/books”
否则您的类必须位于
books\books
命名空间中。是的,这在这两个命名空间中都能起作用,但正如上面的注释所述,奇怪的是它在Windows中都能起作用。
( ! ) Fatal error: Uncaught Error: Class 'books\SearchClient' not found in /var/www/html/search.php on line 6
( ! ) Error: Class 'books\SearchClient' not found in /var/www/html/search.php on line 6
Call Stack
#   Time    Memory  Function    Location
1   0.0032  416944  {main}( )   .../search.php:0
{
    "name"             : "keithdavis/books",
    "description"      : "",
    "version"          : "0.1",
    "minimum-stability": "beta",
    "require"          : {
        "ext-curl"         : "*",
        "ext-json"         : "*",
        "guzzlehttp/guzzle": "^6.3"
    },
    "autoload"         : {
        "psr-4": {
            "books\\": "lib/books"
        }
    }
}