php dependency/package manager Composer 不会安装包
php dependency/package manager Composer will not install packages
我正在使用 PHP 框架 "Slim" 构建一个网站作为我的模板框架,它建议使用 composer 作为包管理器。所以...我现在是第一次使用作曲家,在 64 位 Ubuntu 16.04 上进行本地开发,作曲家 没有在我的项目 中安装任何东西。
我已经完全按照 Slim Framework & Composer 网站上的安装说明进行操作。
基本上这是我所做的顺序:
已将 composer 安装到 /var/www/html
目录 [1.]
使用 Slim-Skeleton 作为基础创建了 Slim 项目
php composer.phar create-project slim/slim-skeleton slimLittleTest
注意:php composer.phar create-project slim/slim-skeleton
命令会自动创建一个 composer.json
文件,我会把该文件的内容放在我的问题中。
切换到那个目录然后 运行 php composer.phar install
没有安装!
如果我尝试 运行 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/php
、php 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
所有供应商软件包都已成功安装时,它就像一个魅力。问题已解决。
我正在使用 PHP 框架 "Slim" 构建一个网站作为我的模板框架,它建议使用 composer 作为包管理器。所以...我现在是第一次使用作曲家,在 64 位 Ubuntu 16.04 上进行本地开发,作曲家 没有在我的项目 中安装任何东西。
我已经完全按照 Slim Framework & Composer 网站上的安装说明进行操作。
基本上这是我所做的顺序:
已将 composer 安装到
/var/www/html
目录 [1.]使用 Slim-Skeleton 作为基础创建了 Slim 项目
php composer.phar create-project slim/slim-skeleton slimLittleTest
注意:php composer.phar create-project slim/slim-skeleton
命令会自动创建一个 composer.json
文件,我会把该文件的内容放在我的问题中。
切换到那个目录然后 运行
php composer.phar install
没有安装!
如果我尝试 运行 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/php
、php composer.phar require php
等,一切都安装正确。
这可能是 SlimFramework.com 入门文档的失败,不一定 "wrong" 因为它可能适用于 some/most 情况,但它们至少应该解决潜在问题对于我 运行 遇到的问题,以及解决方案或避免它的方法。
更好的解决方案
原来我在这里遇到的主要错误是我 缺少分机号 dom。谢谢这个坏蛋
sudo apt-get update
sudo apt-get install php7.0-xml
砰!现在,当我 运行 php composer.phar create-project slim/slim-skeleton projectName
所有供应商软件包都已成功安装时,它就像一个魅力。问题已解决。