Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Composer php 通过composer安装PHP库_Composer Php - Fatal编程技术网

Composer php 通过composer安装PHP库

Composer php 通过composer安装PHP库,composer-php,Composer Php,一些PHP库可以在通过composer安装后使用 这是什么意思 这是使用这些库的唯一方法,还是有办法使用它们将代码复制到正确的位置并在代码中引用它们 示例: mPDF可通过composer使用(仅?) PHPMailer只需将文件复制到正确的位置并引用它们即可 库的问题是,它们可能需要其他库,而这些库可能需要其他库等等。因此,下载它们并将它们放在某个位置将是乏味的,当两个库需要不同版本的同一个库时,您将遇到问题。Composer将为您解决此问题,方法是确定需要哪些库来解决所有需求,并确保下载适

一些PHP库可以在通过composer安装后使用

这是什么意思

这是使用这些库的唯一方法,还是有办法使用它们将代码复制到正确的位置并在代码中引用它们

示例: mPDF可通过composer使用(仅?)

PHPMailer只需将文件复制到正确的位置并引用它们即可
库的问题是,它们可能需要其他库,而这些库可能需要其他库等等。因此,下载它们并将它们放在某个位置将是乏味的,当两个库需要不同版本的同一个库时,您将遇到问题。Composer将为您解决此问题,方法是确定需要哪些库来解决所有需求,并确保下载适合所有人的版本,或者引发错误,即当前库集合包含不兼容的库,以及哪些库

另一个问题是找到存储这些库的正确位置,因为PHP必须找出每个类的存储位置。您必须向代码和库中添加
require
/
include
语句,这非常繁琐,并且会使将来的更新复杂化,例如,在重命名或删除类时。解决这个问题的一种方法是使用一个共享的lib目录,但是当您有多个项目需要不同的库版本时,就会遇到问题

For libraries composer是事实上的标准,您将始终需要/希望在项目中使用它安装库。它负责解析正确的版本,自动加载和更新,使其非常有用,特别是当你还活着的时候,composer还不是一个东西。我会使用它,即使我不需要库,只是为了自动加载和以后添加库的能力,当我的项目增长/更改时

edit:即使不需要其他库,也可以提供composer.json,但是如果通过composer安装它,您可以确保您的系统满足要求(PHP版本和已安装的扩展),否则您可能会错过这些要求,这可能会导致长时间的调试会话,找出某些功能无法工作的原因

编辑您也可以对共享主机上的项目使用composer。然后,您必须在本地计算机上或为实际服务器构建服务器上运行该命令,而不是在服务器上运行该命令。您可以将您的项目(包括供应商文件夹)复制到共享主机上,一切正常。供应商文件夹包含所有库和
autoload.php
,可以与代码一起复制

为了可靠地执行此操作,您可以在config下的composer.json中指定要在其上运行代码的。您至少应该定义正确的PHP版本,还应该定义已安装的扩展,以确保不会在没有所需扩展的地方意外安装库。运行
composer install
composer update
时,它将使用这些平台详细信息作为下载与之匹配的库的基础。当您安装了PHP7,但您的主机尚未安装时,这一点尤为重要

在使用代码的服务器以外的其他服务器上运行composer时,有几个选项不会像
--apcu autoloader
那样工作,但您可能不会使用它们

如果您在本地计算机上运行composer并复制内容,您可以通过在composer安装中添加一些选项来稍微改善体验:

composer安装--无开发--首选dist--类映射
您可以在中获得有关这些选项的详细信息。重要的是:

  • --无dev
    ,以尽可能减少下载到生产所需库的库的数量(因为我们只想在服务器上运行项目,而不是在其上开发)
  • ——首选dist
    (为什么在文档中解释)
  • --classmap authoritive
    --optimize autoloader
    ,(第一个可能不适用于某些项目/库),但它将改进自动加载,使您的应用程序在生产中稍微快一点

前两个选项,如果复制开发环境,则不应运行,因为它们不会提供开发的所有依赖项。可能会设置第二个项目,用于检查git的最新更改,运行测试以确保一切正常,然后删除供应商并运行该命令(可能会对prod的配置进行一些更改),最后将内容复制到共享托管环境。如果您使用像gitlab这样提供CI功能的工具,您也可以在CI服务器上执行这些步骤,并允许复制这些内容,但设置这些内容需要一些时间。

所以,如果没有单个文件可用,那么没有composer就无法使用library?我问这个问题是因为我不认为我不能在托管的Web服务器上使用composer可安装的库。我在答案中添加了另一个更新。简而言之,您可以将composer与共享主机一起使用,您只需在计算机上运行它,不仅复制代码,还复制供应商/文件夹。