【问题标题】:php dependency/package manager Composer will not install packagesphp 依赖项/包管理器 Composer 不会安装包
【发布时间】:2017-09-05 23:59:41
【问题描述】:

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

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

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

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

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

    php composer.phar 创建项目 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 日问题更新

从下面的一些 cmets 中,我收到了这样一个事实,即命令 composer create-project 一定有问题,我的解决方案只是重新要求所有包不应该是必要的。经过进一步检查,我在运行命令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 问题会是我问题的主要来源吗?

【问题讨论】:

  • 您是否创建了composer.json 文件来声明项目的依赖关系?
  • 是的。 create-project slim/slim-skeleton [project_name] 命令会自动创建一个。我将编辑问题以使其更清楚!
  • 安装时,尝试composer -vvv install 获取(高度详细的)状态。也可以在你的目录中运行composer info,看看给出了什么,如果有疑问,还有非常有用的composer -help
  • 嘿,谢谢伙计,不过刚刚找到了解决方案。 @YvesLeBorg

标签: php nginx composer-php slim


【解决方案1】:

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

我只需要为每个包名称运行php composer.phar require [package_name],如果它不在composer.json 中,则将安装该依赖项。所以我需要做的是删除 composer.json 文件,然后返回并要求其中的每个包。没有其他方法起作用,例如 php composer.phar updatephp composer.phar install

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

这可能是来自SlimFramework.com 的入门文档的失败,这不一定是“错误的”,因为它可能在某些/大多数情况下有效,但它们至少应该解决我遇到的问题的可能性,并且避免它的解决方案或方法。

更好的解决方案

原来我在这里遇到的主要错误是我缺少 ext-dom。谢谢这个坏蛋@Anar Bayramov's answer on another StackOverflow question 我知道我可以通过简单地下载 php7.0-xml 来获得丢失的 ext-dom

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

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

【讨论】:

  • 如果有必要,一定是之前出现了问题,因为composer create-project 将自动安装您正在设置的应用程序所需的所有依赖项。您确定create-project 命令没有遇到任何错误吗?
  • 您不需要这样做。一开始还有其他问题。
  • 好的,我将控制台输出的内容放在问题中
猜你喜欢
  • 2017-10-31
  • 2018-12-23
  • 2017-06-28
  • 2018-02-02
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2014-10-24
  • 2015-02-02
相关资源
最近更新 更多