Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 自symfony 3.3以来不存在服务错误_Php_Symfony_Symfony 3.3 - Fatal编程技术网

Php 自symfony 3.3以来不存在服务错误

Php 自symfony 3.3以来不存在服务错误,php,symfony,symfony-3.3,Php,Symfony,Symfony 3.3,我在我的symfony 3.2.(8?)项目中有2个工作服务,并且必须达到3.3(目前为3.3.2)。我的一个服务工作正常,第二个服务给我错误: services.yml parameters: #parameter_name: value services: _defaults: autowire: true autoconfigure: true public: false AppBundle\: re

我在我的symfony 3.2.(8?)项目中有2个工作服务,并且必须达到3.3(目前为3.3.2)。我的一个服务工作正常,第二个服务给我错误:
services.yml

parameters:
    #parameter_name: value

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false
    AppBundle\:
        resource: '../../src/AppBundle/*'
        exclude: '../../src/AppBundle/{Entity,Repository}'
    list_brands:
          class: AppBundle\Service\ListBrands
          arguments: [ '@doctrine.orm.entity_manager' ]
          calls:
           - method: getBrands
    picture_upload:
          class: AppBundle\Service\UploadPicture
          arguments: ['@kernel']  
src\AppBundle\Service\UploadPicture.php

<?php

namespace AppBundle\Service;

use DateTime;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpKernel\Kernel;

class UploadPicture
{
    protected $kernel;

    public function __construct(Kernel $kernel)
    {
        $this->kernel = $kernel;
    }

    public function uploadPicture($object, string $oldPic, string $path)
    {
        /** @var UploadedFile $image */
        $image = $object->getImage();

        $time = new DateTime('now');

        if ($image) {
            $imgPath = '/../web/' . $path;

            $filename = $time->format('d-m-Y-s') . md5($time->format('s')) . uniqid();

            $image->move($this->kernel->getRootDir() . $imgPath,$filename . '.png');

            $object->setImage($path . $filename . '.png');
        } else {
            $object->setImage($oldPic);
        }
    }
}  

您还没有编写如何注入/调用您的服务,但是调用
$this->get()
听起来像是来自控制器内部的调用。我想这与Symfony中的新更改以及
public
属性的默认服务配置有关

请检查配置中的以下注释行:

# services.yml
services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false # here you are setting all service per default to be private
    AppBundle\:
        resource: '../../src/AppBundle/*'
        exclude: '../../src/AppBundle/{Entity,Repository}'
    list_brands:
          class: AppBundle\Service\ListBrands
          arguments: [ '@doctrine.orm.entity_manager' ]
          calls:
           - method: getBrands
    picture_upload:
          class: AppBundle\Service\UploadPicture
          arguments: ['@kernel']  
          public: true # you need to explicitly set the service to public

您需要根据默认设置(不推荐)或在服务定义中明确地将服务标记为public。

请向我们显示
php bin/console debug:container
命令的输出。