Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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
Php 如何在本地计算机上安装的服务器上安装composer软件包?_Php_Symfony_Composer Php - Fatal编程技术网

Php 如何在本地计算机上安装的服务器上安装composer软件包?

Php 如何在本地计算机上安装的服务器上安装composer软件包?,php,symfony,composer-php,Php,Symfony,Composer Php,通过终端I安装Ramsey/Uuid插件: composer require ramsey/uuid 在my PagesRepository.php中,我创建了以下函数: use Ramsey\Uuid\Uuid; function generateUid() { $uuid = Uuid::uuid4(); $uuid = $uuid->getHex(); $uuid = substr($uuid,0,10); return $

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

composer require ramsey/uuid
在my PagesRepository.php中,我创建了以下函数:

use Ramsey\Uuid\Uuid;

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

     return   $uuid;
  }
我正在使用PagesController.php中的函数

  $unique_id = PagesRepository::generateUid();
  $entity->setUnique_id($unique_id);
它在我的本地机器上运行得很好,但是我通过git将它推送到我的服务器,在那里我得到了错误消息:

试图从命名空间“Ramsey\Uuid”加载类“Uuid”。是吗 忘记一个“use”语句 “Symfony\Component\Validator\Constraints\Uuid”

我无法在服务器上安装任何内容,因为它是共享主机,权限被拒绝,因此我将
ramsey
文件夹复制到服务器上的供应商文件夹中。但这并没有解决问题


我不明白,为什么要使用Symfony验证器,因为它在本地计算机上不需要它。

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

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

然后将更新自动生成的文件,如
vendor\composer\autoload\u psr4.php
,并链接到类,如
Ramsey\Uuid\Uuid

重点是

PHP命名空间不能自动包含类/文件。它使用composer自动生成的链接文件和u_uauload magic函数加载类


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

例如,您安装的软件包可能安装了其他依赖项,但在仅传输该软件包的文件时,您没有复制这些依赖项。至少你需要生成的自动加载程序文件

由于您在dev上创建安装并将其传输到生产环境,我建议删除您的本地
供应商
文件夹,然后首先重新进行整个安装:

composer install --prefer-dist --no-dev --no-scripts --no-progress --no-suggest --classmap-authoritative --no-interaction
并将供应商文件夹转移到生产部门。您应该确保安装过程中不包括任何其他步骤(启用捆绑包、创建配置文件等),但我希望您在某个时候会注意到这一点


完成后,您可以重置前面的步骤,并定期安装
composer
进行开发。

当我删除整个供应商文件夹并上传它时,它起到了作用!