我已经使用 composer 安装 drupal - 为什么我仍然有未解决的 php 依赖项?

I've used composer to install drupal - why do I still have unresolved php dependencies?

我正在尝试使用 composer 构建一个 drupal 网络服务器,有人告诉我这是正确的方法。

我用来安装drupal的命令是这样的:

composer create-project drupal-composer/drupal-project:8.x-dev --stability dev mysite --no-interaction

但是,当我启动我的 apache 服务器时,我收到一堆关于缺少库、函数等的错误。我可以通过谷歌搜索每个错误并安装所需的 php 库来解决这些问题 -但是作曲家不应该为我做这件事吗?根据the composer docs;

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

当我导航到 mysite/vendor 目录时,我看到了一堆与 drupal 相关的包,但据我所知,这些只是 drupal 依赖项,而不是 php 依赖项。我在这里遗漏了什么吗?

我认为这里的混淆来自'libraries'这个词。

Composer 是一个依赖管理的工具在PHP.

PHP 本身依赖于脚本引擎(最初是 Zend, but there are alternatives like Facebook's HHVM 等),它作为编译器和运行时引擎工作,它需要 'libraries' - 将其视为 模块扩展。这些模块大部分是用 C 编写的,有些是用 C++ 编写的。

Apache 启动时出现 'missing libraries' 错误并不意味着 Composer 缺少任何 Drupal 依赖项,这意味着 PHP 需要使用缺少的模块正确配置或重建。

有 3 种类型的模块 (PHP's extensions membership):

  • 带有编译选项的 PHP 二进制文件中不能遗漏的核心模块。
  • 与 PHP 核心捆绑在一起但不一定启用的核心扩展模块。
  • 未与 PHP 核心捆绑在一起的外部模块。这些模块可从名为 PECL(PHP 扩展社区库)的存储库中获得。

例如,如果您要通过缓存 PHP 代码和用户变量来加速 Drupal 或任何 PHP 应用程序,您将需要一些像 APC 这样的操作码。也就是说,如果没有使用 PHP 编译相应的模块,将 APC 设置添加到 php.ini 将无法正常工作。