为什么作曲家自动加载在MacOS Docker容器上不起作用



文件结构如下:

index.php
composer.json
composer.lock
-lib
--books
---SearchClient.php (contains class booksSearchClient

以下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"
        }
    }
}
<?php
use booksSearchClient;
require_once __DIR__."/vendor/autoload.php";
$oSearchClient = new SearchClient();

但是,在Macos(Mojave)上:

( ! ) Fatal error: Uncaught Error: Class 'booksSearchClient' not found in /var/www/html/search.php on line 6
( ! ) Error: Class 'booksSearchClient' 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

在调试中,看来" lib"的路径是问题,但我尝试过"/lib",这也不起作用。我认为也许我的作曲家安装了错误。我是Windows上经验丰富的PHP开发人员,但Mac相对较新,因此我对在Mac上安装作曲家的最佳方法并不是100%。我在全球遵循这些说明:

https://getcomposer.org/doc/00-intro.md#globally

查看您的文件结构搜索客户端的名称空间将需要为 namespace booksbooks;

这是因为您在LIB文件夹上设置了名称空间书。与其在名称空间中使用两次书籍,您可以通过添加

将自动加载器直接指向书籍文件夹
{
    "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,以重建名称空间。

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新