Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Error on listing environment variables #34470

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
versgui opened this issue Nov 20, 2019 · 5 comments
Closed

Error on listing environment variables #34470

versgui opened this issue Nov 20, 2019 · 5 comments
Labels
Bug DependencyInjection Help wanted Issues and PRs which are looking for volunteers to complete them. Status: Needs Review

Comments

@versgui
Copy link

versgui commented Nov 20, 2019

Symfony version(s) affected: 4.4.0-RC1

Description
When I try to list environment variables with bin/console debug:container --env-vars in DEV environment, I have this error:

In ServiceLocatorTrait.php line 66:
  Function name must be a string

Exception trace:
  at /var/www/project/vendor/symfony/service-contracts/ServiceLocatorTrait.php:66
 Symfony\Component\DependencyInjection\ServiceLocator->doGet() at /var/www/project/vendor/symfony/dependency-injection/ServiceLocator.php:39
 Symfony\Component\DependencyInjection\ServiceLocator->get() at /var/www/project/vendor/symfony/dependency-injection/Container.php:414
 Symfony\Component\DependencyInjection\Container->getEnv() at /var/www/project/vendor/symfony/dependency-injection/ContainerBuilder.php:1583
 Symfony\Component\DependencyInjection\ContainerBuilder->getEnv() at n/a:n/a
 ReflectionMethod->invoke() at /var/www/project/vendor/symfony/framework-bundle/Console/Descriptor/Descriptor.php:369
 Symfony\Bundle\FrameworkBundle\Console\Descriptor\Descriptor->getContainerEnvVars() at /var/www/project/vendor/symfony/framework-bundle/Console/Descriptor/Descriptor.php:56
 Symfony\Bundle\FrameworkBundle\Console\Descriptor\Descriptor->describe() at /var/www/project/vendor/symfony/console/Helper/DescriptorHelper.php:67
 Symfony\Component\Console\Helper\DescriptorHelper->describe() at /var/www/project/vendor/symfony/framework-bundle/Command/ContainerDebugCommand.php:165
 Symfony\Bundle\FrameworkBundle\Command\ContainerDebugCommand->execute() at /var/www/project/vendor/symfony/console/Command/Command.php:255
 Symfony\Component\Console\Command\Command->run() at /var/www/project/vendor/symfony/console/Application.php:1029
 Symfony\Component\Console\Application->doRunCommand() at /var/www/project/vendor/symfony/framework-bundle/Console/Application.php:97
 Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /var/www/project/vendor/symfony/console/Application.php:272
 Symfony\Component\Console\Application->doRun() at /var/www/project/vendor/symfony/framework-bundle/Console/Application.php:83
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/www/project/vendor/symfony/console/Application.php:148
 Symfony\Component\Console\Application->run() at /var/www/project/bin/console:38

How to reproduce
Type bin/console debug:container --env-vars --env=dev with Symfony 4.4.0-RC1 and PHP 7.3.11 and these required packages.
I tried with a fresh installation, the error occurs.
Example for reproduction: https://github.com/versgui/sf44-bug

"require": {
        "ext-ctype": "*",
        "ext-iconv": "*",
        "ext-json": "*",
        "a2lix/translation-form-bundle": "^3.0",
        "api-platform/api-pack": "^1.2",
        "deanblackborough/php-quill-renderer": "^3.17",
        "doctrine/data-fixtures": "dev-master",
        "doctrine/doctrine-migrations-bundle": "^2.0",
        "easycorp/easyadmin-bundle": "^2.1",
        "fpay/xid-php": "^1.0",
        "geoip2/geoip2": "^2.9",
        "liip/imagine-bundle": "^2.1",
        "nesbot/carbon": "^2.14",
        "php-translation/symfony-bundle": "^0.8.1",
        "sensio/framework-extra-bundle": "^5.2",
        "stof/doctrine-extensions-bundle": "^1.3",
        "symfony/console": "4.4.*",
        "symfony/dependency-injection": "4.4.*",
        "symfony/dotenv": "4.4.*",
        "symfony/flex": "^1.1",
        "symfony/form": "4.4.*",
        "symfony/framework-bundle": "4.4.*",
        "symfony/monolog-bundle": "^3.4",
        "symfony/orm-pack": "^1.0",
        "symfony/property-info": "4.4.*",
        "symfony/security-bundle": "4.4.*",
        "symfony/swiftmailer-bundle": "^3.2",
        "symfony/twig-bundle": "4.4.*",
        "symfony/validator": "4.4.*",
        "symfony/webpack-encore-bundle": "^1.1",
        "symfony/yaml": "4.4.*",
        "twig/extensions": "^1.5",
        "vich/uploader-bundle": "^1.9",
        "white-october/pagerfanta-bundle": "^1.2"
},
"require-dev": {
        "api-platform/schema-generator": "^2.1",
        "hautelook/alice-bundle": "^2.3",
        "nunomaduro/phpinsights": "^1.9",
        "squizlabs/php_codesniffer": "^3.4",
        "symfony/maker-bundle": "^1.11",
        "symfony/phpunit-bridge": "4.4.*",
        "symfony/profiler-pack": "^1.0",
        "symfony/test-pack": "^1.0",
        "symfony/var-dumper": "4.4.*",
        "symfony/web-server-bundle": "4.4.*"
    }

Possible Solution

Additional context

@nicolas-grekas
Copy link
Member

nicolas-grekas commented Nov 20, 2019

Could you please provide a reproducer in the form of a repository we could clone locally?

@versgui versgui changed the title Error on listing environement variables Error on listing environment variables Nov 20, 2019
@versgui
Copy link
Author

versgui commented Nov 20, 2019

@nicolas-grekas This bug is reproducible on my side with this example: https://github.com/versgui/sf44-bug

@nicolas-grekas
Copy link
Member

/cc @ro0NL maybe?

@nicolas-grekas nicolas-grekas added the Help wanted Issues and PRs which are looking for volunteers to complete them. label Nov 24, 2019
@rached-bch
Copy link

Most probably, its a symfony issue that must be corrected.

The problem is that in line 66 of ServiceLocatorTrait.php file we mest return an object or the sytax used is a function syntax. Correct this by using this code temporarily :

try {
            //return $this->factories[$id]($this);
            return $this->factories[$id];
        } finally {
            unset($this->loading[$id]);
        }

$this->factories[$id] is an instance of Symfony\Component\DependencyInjection\EnvVarProcessor class and its not a function

@nicolas-grekas
Copy link
Member

Fixed in #34755

chalasr added a commit that referenced this issue Dec 6, 2019
…mmands (nicolas-grekas)

This PR was merged into the 3.4 branch.

Discussion
----------

[FrameworkBundle] resolve service locators in `debug:*` commands

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #34470
| License       | MIT
| Doc PR        | -

Because of the way ServiceClosureArgument are dumped, we need to resolve locators after loading the xml dump of the container:
https://github.com/symfony/symfony/blob/3.4/src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php#L273

Commits
-------

820da66 [FrameworkBundle] resolve service locators in `debug:*` commands
@chalasr chalasr closed this as completed Dec 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug DependencyInjection Help wanted Issues and PRs which are looking for volunteers to complete them. Status: Needs Review
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants