php dependency/package manager Composer 不会安装包

php dependency/package manager Composer will not install packages

我正在使用 PHP 框架 "Slim" 构建一个网站作为我的模板框架,它建议使用 composer 作为包管理器。所以...我现在是第一次使用作曲家,在 64 位 Ubuntu 16.04 上进行本地开发,作曲家 没有在我的项目 中安装任何东西。

我已经完全按照 Slim Framework & Composer 网站上的安装说明进行操作。

基本上这是我所做的顺序:

  1. 已将 composer 安装到 /var/www/html 目录 [1.]

  2. 使用 Slim-Skeleton 作为基础创建了 Slim 项目

    php composer.phar create-project slim/slim-skeleton slimLittleTest

注意:php composer.phar create-project slim/slim-skeleton 命令会自动创建一个 composer.json 文件,我会把该文件的内容放在我的问题中。

  1. 切换到那个目录然后 运行 php composer.phar install

  2. 没有安装!

如果我尝试 运行 php -S localhost:8080 -t public public/index.php 正如你现在应该能够的那样(来自 Slim 框架网站主页教程),我收到以下错误:

[Tue Sep  5 18:55:04 2017] PHP Fatal error:  require(): Failed opening required '/var/www/html/slimLittleTest/public/../vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/html/slimLittleTest/public/index.php on line 12
[Tue Sep  5 18:55:05 2017] PHP Warning:  
require(/var/www/html/slimLittleTest/public/../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/slimLittleTest/public/index.php on line 12

这个错误当然是有道理的,因为什么都没安装!没有 vendor/autoload.php 因为 Composer 没有安装任何东西。 (默认情况下,Composer 将依赖项安装到项目根目录中的 vendor 文件夹中)

9 月 7 日问题更新

从下面的一些评论中,我已经意识到命令 composer create-project 一定出了问题,我的解决方案只是重新要求所有包不应该是必要的。经过进一步检查,我确实在 运行ning 命令 php composer.phar create-project slim/slim-skeleton projectName 上遇到了一些错误。下面是 运行 执行该命令后从控制台得到的确切输出:

php composer.phar create-project slim/slim-skeleton tester
Installing slim/slim-skeleton (3.1.2)
  - Installing slim/slim-skeleton (3.1.2): Loading from cache
 Created project in tester
 Loading composer repositories with package information
 Updating dependencies (including require-dev)
 Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/phpunit 5.7.9 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.7.8 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 5.7.7 requires ext-dom * -> the requested PHP extension dom is missing from your system.
   [.......]

 To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/7.0/cli/php.ini
- /etc/php/7.0/cli/conf.d/10-mysqlnd.ini
- /etc/php/7.0/cli/conf.d/10-opcache.ini
- /etc/php/7.0/cli/conf.d/10-pdo.ini
- /etc/php/7.0/cli/conf.d/20-calendar.ini
- /etc/php/7.0/cli/conf.d/20-ctype.ini
- /etc/php/7.0/cli/conf.d/20-curl.ini
- /etc/php/7.0/cli/conf.d/20-exif.ini
- /etc/php/7.0/cli/conf.d/20-fileinfo.ini
- /etc/php/7.0/cli/conf.d/20-ftp.ini
- /etc/php/7.0/cli/conf.d/20-gettext.ini
- /etc/php/7.0/cli/conf.d/20-iconv.ini
- /etc/php/7.0/cli/conf.d/20-imagick.ini
- /etc/php/7.0/cli/conf.d/20-json.ini
- /etc/php/7.0/cli/conf.d/20-mbstring.ini
- /etc/php/7.0/cli/conf.d/20-mcrypt.ini
- /etc/php/7.0/cli/conf.d/20-mysqli.ini
- /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini
- /etc/php/7.0/cli/conf.d/20-phar.ini
- /etc/php/7.0/cli/conf.d/20-posix.ini
- /etc/php/7.0/cli/conf.d/20-readline.ini
- /etc/php/7.0/cli/conf.d/20-shmop.ini
- /etc/php/7.0/cli/conf.d/20-sockets.ini
- /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.0/cli/conf.d/20-sysvsem.ini
- /etc/php/7.0/cli/conf.d/20-sysvshm.ini
- /etc/php/7.0/cli/conf.d/20-tokenizer.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

.ini extensions 问题或 Problem 1 php unit requires ext-dom 问题是我问题的主要原因吗?

我很幸运,偶然发现了适合我情况的答案。

我只需要 运行 php composer.phar require [package_name],对于每个包名称,如果它不在 composer.json 中,那么该依赖项将被安装。所以我需要做的是删除 composer.json 文件,然后返回并从中获取每个包。其他都不起作用,例如 php composer.phar update,或 php composer.phar install

所以我从命令行 运行 php composer.phar require slim/phpphp composer.phar require php 等,一切都安装正确。

这可能是 SlimFramework.com 入门文档的失败,不一定 "wrong" 因为它可能适用于 some/most 情况,但它们至少应该解决潜在问题对于我 运行 遇到的问题,以及解决方案或避免它的方法。

更好的解决方案

原来我在这里遇到的主要错误是我 缺少分机号 dom。谢谢这个坏蛋 我知道我可以通过简单地下载 php7.0 来获得丢失的 ext-dom -xml.

sudo apt-get update
sudo apt-get install php7.0-xml

砰!现在,当我 运行 php composer.phar create-project slim/slim-skeleton projectName 所有供应商软件包都已成功安装时,它就像一个魅力。问题已解决。