首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何在本地计算机上安装的服务器上的composer包?

我如何在本地计算机上安装的服务器上的composer包?
EN

Stack Overflow用户
提问于 2018-11-29 08:42:37
回答 2查看 340关注 0票数 1

通过终端I安装了Ramsey/Uuid插件:

代码语言:javascript
运行
复制
composer require ramsey/uuid

在我的PagesRepository.php中,我创建了以下函数:

代码语言:javascript
运行
复制
use Ramsey\Uuid\Uuid;

  function generateUid()
  {
     $uuid = Uuid::uuid4();
     $uuid = $uuid->getHex();
     $uuid =  substr($uuid,0,10);

     return   $uuid;
  }

我在PagesController.php中使用这个函数

代码语言:javascript
运行
复制
  $unique_id = PagesRepository::generateUid();
  $entity->setUnique_id($unique_id);

它在我的本地机器上运行得很好,但是我通过git将它推到我的服务器上,在那里我得到了错误消息:

试图从命名空间"Ramsey\Uuid“加载类"Uuid”。你忘了"Symfony\Component\Validator\Constraints\Uuid"?的“使用”语句了吗?

我不能在服务器上安装任何东西,因为它是一个共享主机,并且权限被拒绝,所以我将ramsey文件夹复制到服务器上的供应商文件夹中。但这并不能解决问题。

我不明白,为什么这会要求Symfony验证器,因为它在本地机器上不需要它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-29 09:02:49

这是因为composer自动生成的文件没有链接您的文件夹或类(ramsey)。

因此,据我所知,您不能在共享主机上运行composer updatecomposer install,您应该将整个更新的vendor文件夹上载到您的服务器上。

然后自动生成的文件(如vendor\composer\autoload_psr4.php )将被更新,并具有指向类(如Ramsey\Uuid\Uuid )的链接。

点是

PHP名称空间不能自动包含类/文件。它用composer自动生成的链接文件和__auload魔术函数加载类。

票数 1
EN

Stack Overflow用户

发布于 2018-11-29 09:04:07

如果服务器中没有运行composer install,则至少需要将整个vendor文件夹复制到运行系统的任何位置。

例如,您已安装的包可能已安装了其他依赖项,但在仅传输该包的文件时,您不会复制它们。至少您需要生成的自动加载程序文件。

由于您在dev上创建安装并将其传输到生产中,我建议删除本地vendor文件夹,然后首先重做整个安装:

代码语言:javascript
运行
复制
composer install --prefer-dist --no-dev --no-scripts --no-progress --no-suggest --classmap-authoritative --no-interaction

并将那个供应商文件夹传输到生产部门。您应该确保安装过程中不包括任何其他步骤(启用包、创建配置文件等),但我希望您能在某个时候解决这个问题。

完成这些操作后,您可以重置前面的步骤,并为开发做一个常规的composer install

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53534884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档