【发布时间】:2019-07-11 22:09:42
【问题描述】:
文件结构如下:
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"
}
}
}
<?php
use books\SearchClient;
require_once __DIR__."/vendor/autoload.php";
$oSearchClient = new SearchClient();
但是,在 macOS (Mojave) 上:
( ! ) 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
在调试中,路径“lib”似乎是问题所在,但我尝试了“/lib”,但也不起作用。我想也许我的 Composer 安装不正确。我是 Windows 上经验丰富的 PHP 开发人员,但对 Mac 来说相对较新,所以我不是 100% 认为在 Mac 上安装 Composer 的最佳方式。我在全球范围内遵循了这些说明:
【问题讨论】:
-
我不明白为什么这应该在 Windows 上工作,但您的自动加载配置似乎应该如下所示:
books\\": "lib/books"否则您的类必须在books\books命名空间中。跨度>
标签: macos docker-compose composer-php autoload