docker 上的 Composer:未捕获错误:找不到类

问题描述 投票:0回答:1

我正在尝试构建一个最小的 docker 镜像来使用 packagist.org/packages/nikic/php-parser:

FROM php
RUN apt-get update
RUN apt-get install zip -y
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
COPY . .

安装(单个)依赖项进展顺利(在外部

Dockerfile
完成说明):

root@e1aa9cdb4e13:/# composer install
< ... omitted for brevity ... >
Package operations: 1 install, 0 updates, 0 removals
  - Downloading nikic/php-parser (v5.0.2)
  - Installing nikic/php-parser (v5.0.2): Extracting archive
Generating autoload files

当我尝试运行文档中的示例时,我崩溃了:

root@e1aa9cdb4e13:/# php main.php
Fatal error: Uncaught Error: Class "PhpParser\ParserFactory" not found in /main.php:15

这是我使用的示例(取自文档中的“原样”):

<?php
use PhpParser\Error;
use PhpParser\NodeDumper;
use PhpParser\ParserFactory;

$code = <<<'CODE'
<?php

function test($foo)
{
    var_dump($foo);
}
CODE;

$parser = (new ParserFactory())->createForNewestSupportedVersion();
try {
    $ast = $parser->parse($code);
} catch (Error $error) {
    echo "Parse error: {$error->getMessage()}\n";
    return;
}

$dumper = new NodeDumper;
echo $dumper->dump($ast) . "\n";

编辑

include
目录添加显式
vendor
, 我似乎又向前迈进了一步:

include "/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php";

新错误消息:

Fatal error: Uncaught Error: Class "PhpParser\PhpVersion" not found in /vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
php docker composer-php packagist
1个回答
0
投票

事实证明我错过了一个陈述:

<?php
require '/vendor/autoload.php';

当我添加这一行时,它工作得很好:

root@e1aa9cdb4e13:/# php main.php
array(
    0: Stmt_Function(
        attrGroups: array(
        )
        byRef: false
        name: Identifier(
            name: test
        )
< ... omitted for brevity ... >

*我找到了参考资料这里

© www.soinside.com 2019 - 2024. All rights reserved.