How to update symfony with flex? - php

I think my question may be stupid, but I can’t figure out how to upgrade my Symfony project from version 4.1. * to version 4.3. *.
I tried to touch the composer.json. But it sends me an error message... Does anyone have the solution?
composer.json
I had this :
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.1.*"
}
}
I changed by that:
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.3.*"
}
}
Version 4.4 does not download or update...

extra.symfony.require is for performance reasons, as symfony has too many versions and update may take a long time. To update project you also need to add 4.3.* constraint to the require section:
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"symfony/console": "4.3.*",
"symfony/dotenv": "4.3.*",
"symfony/flex": "^1.1",
"symfony/framework-bundle": "4.3.*",
"symfony/yaml": "4.3.*"
},

Related

phpinfo() shows opcache.blacklist_filename file, but contents ignored

In my Symfony/Sonata application's php.ini file, I have opcache.blacklist_filename set to /usr/src/app/config/opcache-exclude.txt. In a phpinfo() call on my test server, that file shows up in the correct place. Here is the content of the file:
/usr/src/app/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php
/usr/src/app/vendor/sonata-project/admin-bundle/src/SonataAdminBundle.php
/usr/src/app/vendor/symfony/security-core/Authorization/TraceableAccessDecisionManager.php
/usr/src/app/vendor/sonata-project/admin-bundle/src/*/*.php
/usr/src/app/vendor/sonata-project/admin-bundle/src/*/*/*.php
/usr/src/app/vendor/sonata-project/core-bundle/src/CoreBundle/SonataCoreBundle.php
/usr/src/app/vendor/sonata-project/core-bundle/src/*/*.php
/usr/src/app/vendor/sonata-project/core-bundle/src/*/*/*.php
/usr/src/app/vendor/symfony/security-core/Authorization/*
However, when I load my Sonata application, I still get this error, which is the same error that shows up when no blacklist is used:
Fatal error: Cannot redeclare twig_truncate_filter() (previously declared in vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php:38)
Am I using the wrong format in my exclusion file? How can I fix this so that the file's contents do not get ignored?
====
Update #1: When I simplify the contents of the blacklist file to this:
/usr/src/app/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php
/usr/src/app/vendor/sonata-project/admin-bundle/src/SonataAdminBundle.php
/usr/src/app/vendor/symfony/security-core/Authorization/TraceableAccessDecisionManager.php
... I still get essentially the same error:
Compile Error: Cannot declare class Twig_Extensions_Extension_Text,
because the name is already in use in Text.php line 15
(Yes, this is technically a different error, but it's essentially saying the same thing: The contents of Text.php are already declared in the opcache and cannot be redeclared.)
====
Update #2: Running php -v shows 7.4.19 as the version. Here is a bit of version info that shows up when I use composer info:
twig/extra-bundle v3.3.1
twig/twig v2.12.2
Running composer why twig/twig shows this output:
app-insights-php/app-insights-php-bundle 0.2.5 requires twig/twig (^1.2|^2)
friendsofsymfony/user-bundle v2.1.2 requires twig/twig (^1.28 || ^2.0)
sonata-project/admin-bundle 3.55.0 requires twig/twig (^2.10)
sonata-project/block-bundle 3.18.2 requires twig/twig (^1.34 || ^2.0)
sonata-project/core-bundle 3.17.2 requires twig/twig (^1.34 || ^2.0)
sonata-project/formatter-bundle 4.1.3 requires twig/twig (^2.4)
sonata-project/media-bundle 3.21.0 requires twig/twig (^2.10)
sonata-project/page-bundle 3.13.0 requires twig/twig (^2.10)
sonata-project/seo-bundle 2.9.0 requires twig/twig (^1.40 || ^2.9 || ^3.0)
sonata-project/translation-bundle 2.5.0 requires twig/twig (^2.12)
sonata-project/user-bundle 5.x-dev requires twig/twig (^2.9)
symfony-cmf/routing-bundle 2.1.1 requires twig/twig (^1.35 || ^2.4.4)
symfony/twig-bridge v4.4.16 requires twig/twig (^1.41|^2.10|^3.0)
symfony/twig-bundle v4.4.16 requires twig/twig (^1.41|^2.10|^3.0)
symfony/web-profiler-bundle v4.4.16 requires twig/twig (^1.41|^2.10|^3.0)
twig/extensions v1.5.4 requires twig/twig (^1.27|^2.0)
twig/extra-bundle v3.3.1 requires twig/twig (^2.4|^3.0)
====
Edit #3: There is no use of include_once() or require_once() in this app, beyond the normal autoloaders and configuration loaders found in many Symfony applications. This problem goes away when opcache is turned off. So it's definitely related to opcaching.
====
Edit #4: Here is my composer.json file.
{
"type": "project",
"license": "proprietary",
"name": "exozet/oesterreich-werbung-cms",
"description": "the new cms for Österreich Werbung based on symfony with sonata",
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-curl": "*",
"ext-iconv": "*",
"ext-intl": "*",
"ext-json": "*",
"ext-simplexml": "*",
"ext-zip": "*",
"ext-zend-opcache": "*",
"app-insights-php/app-insights-php-bundle": "^0.2.5",
"app-insights-php/doctrine-dependency-logger": "^0.2.0",
"cocur/slugify": "^3.2",
"dracoblue/craur": "^2.1",
"elao/enum": "^1.7",
"friendsofsymfony/elastica-bundle": "^5.1",
"friendsofsymfony/rest-bundle": "^2.5",
"friendsofsymfony/user-bundle": "^2.0",
"galbar/jsonpath": "^1.0",
"guzzlehttp/guzzle": "6.3.3",
"jms/serializer-bundle": "3.8.0",
"knplabs/knp-gaufrette-bundle": "^0.6.1",
"knplabs/knp-menu-bundle": "^2.0",
"lightsaml/sp-bundle": "^1.2",
"madcoda/php-youtube-api": "^1.2",
"microsoft/azure-storage-blob": "^1.4",
"microsoft/azure-storage-file": "^1.2",
"microsoft/azure-storage-queue": "^1.3",
"microsoft/azure-storage-table": "^1.1",
"nelmio/api-doc-bundle": "^4.3",
"predis/predis": "^1.1",
"sensio/framework-extra-bundle": "^5.1",
"sonata-project/admin-bundle": "^3.20",
"sonata-project/datagrid-bundle": "^2.0",
"sonata-project/doctrine-orm-admin-bundle": "^3.10",
"sonata-project/formatter-bundle": "^4.1",
"sonata-project/media-bundle": "^3.2",
"sonata-project/page-bundle": "^3.12",
"sonata-project/translation-bundle": "^2.5",
"sonata-project/user-bundle": "dev-master",
"stof/doctrine-extensions-bundle": "^1.4",
"symfony/asset": "4.4.*",
"symfony/console": "4.4.*",
"symfony/dotenv": "4.4.*",
"symfony/expression-language": "4.4.*",
"symfony/flex": "^1.3.1",
"symfony/form": "4.4.*",
"symfony/framework-bundle": "4.4.*",
"symfony/http-client": "4.4.*",
"symfony/intl": "4.4.*",
"symfony/lock": "4.4.*",
"symfony/messenger": "4.4.*",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "*",
"symfony/process": "4.4.*",
"symfony/security-bundle": "4.4.*",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/translation": "4.4.*",
"symfony/twig-bundle": "4.4.*",
"symfony/validator": "4.4.*",
"symfony/web-link": "4.4.*",
"symfony/yaml": "4.4.*",
"twig/extra-bundle": "^3.3",
"webmozart/assert": "^1.5"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.2",
"hautelook/alice-bundle": "^2.5",
"squizlabs/php_codesniffer": "*",
"symfony/debug-pack": "*",
"symfony/maker-bundle": "^1.0",
"symfony/profiler-pack": "*",
"symfony/test-pack": "*",
"symfony/web-server-bundle": "4.4.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*",
"egeloen/ckeditor-bundle": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"ckeditor:install --clear=drop": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts",
"/bin/sh -c \"if [ -f contrib/setup.sh ]; then contrib/setup.sh; fi\""
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.4.*"
}
}
}
====
Edit #5:
Here is the output of composer why twig/extensions:
sonata-project/admin-bundle 3.55.0 requires twig/extensions (^1.5)
sonata-project/core-bundle 3.17.2 requires twig/extensions (^1.5)
Here is the content of my preload.php file:
<?php
if (file_exists(dirname(__DIR__).'/var/cache/dev/srcApp_KernelDevContainer.preload.php')) {
require dirname(__DIR__).'/var/cache/dev/srcApp_KernelDevContainer.preload.php';
}
if (file_exists(dirname(__DIR__).'/var/cache/dev/App_KernelDevContainer.preload.php')) {
require dirname(__DIR__).'/var/cache/dev/App_KernelDevContainer.preload.php';
}
... and the referenced App_KernelDevContainer.preload.php file contains this logic that you can see here:
https://gist.github.com/patrickmaynard/0f2cff49628fe068b989a7024cd21e34
The errors
Compile Error: Cannot declare class Twig_Extensions_Extension_Text, because the name is already in use in Text.php line 15
Fatal error: Cannot redeclare twig_truncate_filter() (previously declared in vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php:38)
sound a lot like you're having multiple declarations of same method or class or you're calling include()/require() multiple times explicitly or implicitly.
Do you use include() or require() anywhere that could be called depending on opcache being effective or not?
When you use PHP autoloader, the only explicit include() calls you should have are one call to load the autoloader and all the other calls in the autoloader implementation only. And make sure you don't have include_once() nor require_once() anywhere in your codebase because those do not mix well with autoloader.
The only reason to blacklist something from the opcache should be if you need to generate code that should be reloaded. It shouldn't be used to workaround code errors (e.g. incorrect include() chains).

Can't install RabbitMQ Symfony

i'm trying to install into my project RabbitMq bundle
i use php7.4.9
i can install rabbitMQ server on Ubuntu, but now i have problem with Symfony
and I also wanted to ask, suddenly you came across a good example in OOP, I want to make good code
tanyaPC: composer require php-amqplib/rabbitmq-bundle
Using version ^1.14 for php-amqplib/rabbitmq-bundle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Restricting packages listed in "symfony/symfony" to "5.1.*"
Your requirements could not be resolved to an installable set of packages.
Problem 1
- php-amqplib/rabbitmq-bundle v1.14.4 requires symfony/dependency-injection ^2.7|^3.0|^4.0 -> no matching package found.
- php-amqplib/rabbitmq-bundle v1.14.3 requires symfony/dependency-injection ^2.7|^3.0|^4.0 -> no matching package found.
- php-amqplib/rabbitmq-bundle v1.14.2 requires symfony/dependency-injection ^2.7|^3.0|^4.0 -> no matching package found.
- php-amqplib/rabbitmq-bundle v1.14.1 requires symfony/dependency-injection ^2.7|^3.0|^4.0 -> no matching package found.
- php-amqplib/rabbitmq-bundle v1.14.0 requires symfony/dependency-injection ^2.7|^3.0|^4.0 -> no matching package found.
- Installation request for php-amqplib/rabbitmq-bundle ^1.14 -> satisfiable by php-amqplib/rabbitmq-bundle[v1.14.0, v1.14.1, v1.14.2, v1.14.3, v1.14.4].
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
- It's a private package and you forgot to add a custom repository to find it
Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Installation failed, reverting ./composer.json to its original content.
i'm trying found resolve this problem in internet, but i didnt found, i really hope, that you can help me
this is my composer.json
{
"type": "project",
"license": "proprietary",
"require": {
"php": ">=7.2.5",
"ext-ctype": "*",
"ext-iconv": "*",
"composer/package-versions-deprecated": "^1.11",
"doctrine/annotations": "^1.11",
"doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^3.0",
"doctrine/orm": "^2.7",
"php-amqplib/php-amqplib": "^2.12",
"symfony/console": "5.1.*",
"symfony/dotenv": "5.1.*",
"symfony/flex": "^1.3.1",
"symfony/form": "5.1.*",
"symfony/framework-bundle": "5.1.*",
"symfony/security-bundle": "5.1.*",
"symfony/twig-bundle": "5.1.*",
"symfony/validator": "5.1.*",
"symfony/yaml": "5.1.*"
},
"require-dev": {
"symfony/maker-bundle": "^1.23",
"symfony/stopwatch": "^5.1",
"symfony/web-profiler-bundle": "^5.1"
},
"config": {
"optimize-autoloader": true,
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.1.*"
}
}
}
Problem
It says it
requires symfony/dependency-injection ^2.7|^3.0|^4.0
but at the same time you have
Restricting packages listed in "symfony/symfony" to "5.1.*"
so it will not be compatible.
Possible Solution 1
You make all the Symfony stuff "old", something like
"symfony/console": "^4.4.0|^5.0.0|^5.1.0",
...
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.4.*"
}
}
(can probably be optimized), this might work.
Possible Solution 2
Since the bundle hasn't been updated in a while and you are using a new version of Symfony, a better way might be to use the symfony/messenger.

Symfony skeleton FrameworkExtraBundle not working with Doctrine

I just installed fresh Symfony framework skeleton with annotations and Doctrine and it not works. I have got an error
Argument 1 passed to Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter::__construct()
must be an instance of Doctrine\Common\Persistence\ManagerRegistry or null,
instance of Doctrine\Bundle\DoctrineBundle\Registry given, called in
my composer file
{
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"composer/package-versions-deprecated": "^1.11",
"doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^2.2",
"doctrine/orm": "^2.7",
"sensio/framework-extra-bundle": "^5.5",
"symfony/console": "4.4.*",
"symfony/dotenv": "4.4.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "4.4.*",
"symfony/yaml": "4.4.*"
},
"require-dev": {
"symfony/web-server-bundle": "4.4.*"
},
Please help.
I got the exact same problem today after installing the new symfony binary, composer update worked for me.
I have added to the config/packages/sensio_framework_extra.yaml
this lines and it working
sensio_framework_extra:
router:
annotations: false
request:
converters: true
disable: ['doctrine.orm']

Symfony 4.4 unknown inky_to_html filter

I recently updated Symfony to 4.4 (from 4.3) and can't have my translations files updated automatically (using php bin/console tran:up --force) any more. The error that pops up is:
In body.html.twig line 1:
Unknown "inky_to_html" filter.
The file in question is vendor/symfony/twig-bridge/Resources/views/Email/zurb_2/notification/body.html.twig which I never use, I have no idea why it's inclued all at a sudden. To get rid of the message I tried to require twig/inky-extra but that requires the ext-xsl-extension and I don't really want to bloat my code with things I don't need just to get rid of an error related to a twig-extension that's also not needed.
I tried to change the version of the translation-interface as described here, but that also didn't change anything.
I guess it has something to do with my project as I couldn't find any similar problem, but I can't figure it out, so any help is appreciated.
EDIT:
Here's my composer.json, it's basically the same as it was generated when creating the Symfony 4.3-project, I only changed the version names to upgrade as described in the docs and ran composer update.
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"ext-intl": "*",
"apy/breadcrumbtrail-bundle": "^1.5",
"craue/config-bundle": "^2.3",
"easycorp/easy-log-handler": "^1.0",
"friendsofsymfony/jsrouting-bundle": "^2.4",
"league/csv": "^9.4",
"nesbot/carbon": "^2.25",
"sensio/framework-extra-bundle": "^5.1",
"sg/datatablesbundle": "^1.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "^4.0",
"symfony/console": "^4.0",
"symfony/dotenv": "^4.0",
"symfony/expression-language": "^4.0",
"symfony/flex": "^1.3.1",
"symfony/form": "^4.0",
"symfony/framework-bundle": "^4.0",
"symfony/http-client": "^4.0",
"symfony/intl": "^4.0",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "*",
"symfony/process": "^4.0",
"symfony/security-bundle": "^4.0",
"symfony/security-csrf": "^4.0",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/translation": "^4.0",
"symfony/twig-bundle": "^4.0",
"symfony/validator": "^4.0",
"symfony/web-link": "^4.0",
"symfony/yaml": "^4.0",
"tetranz/select2entity-bundle": "^3.0"
},
"require-dev": {
"dama/doctrine-test-bundle": "^6.1",
"doctrine/doctrine-fixtures-bundle": "^3.2",
"pdepend/pdepend": "^2.5",
"phpmd/phpmd": "^2.7",
"phpunit/php-code-coverage": "^7.0",
"roave/security-advisories": "dev-master",
"squizlabs/php_codesniffer": "3.*",
"symfony/debug-pack": "*",
"symfony/maker-bundle": "^1.0",
"symfony/phpunit-bridge": "^4.3",
"symfony/profiler-pack": "*",
"symfony/test-pack": "*",
"symfony/web-server-bundle": "^4.0"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.4.*"
}
}
}
symfony/twig-bridge:4.4 changed the dev requirements to require twig/inky-extra and also added the new Resources/views/Email template files that utilize the inky_to_html filter, that were not included in 4.3.
Since tran:up attempts to scan files within the <Bundle>/Resources/views directories of each bundle for translations, to circumvent the issue and avoid scanning the twig-bridge views, you should be able to specify the bundle name you want to update the translations of.
php bin/console tran:up <locale> <bundle or directory>
Outside of including the dev requirements to circumvent the issue, you would need to revert to symfony/symfony:4.3 to get rid of the new twig-bridge/Resources/views/Email directory.
Since you are using symfony/symfony:4.4 it requires the corresponding twig-bridge.
symfony/symfony:4.4 require [sic]
"symfony/twig-bridge": "self.version"
symfony/twig-bridge:4.4 require-dev [sic]
"twig/cssinliner-extra": "^2.12",
"twig/inky-extra": "^2.12",
"twig/markdown-extra": "^2.12"
Ultimately it appears to be a bug with the dev dependencies that should be reported to Symfony.
Update: A patch has been issued for version 3.4+, see: Fix the translation commands when a template contains a syntax error #34711

Behat can't find PhpExecutableFinder

I get the following error when executing Behat:
PHP Fatal error: Class 'Symfony\Component\Process\PhpExecutableFinder' not found
I don't know if its normal, but the PhpExecutableFinder is located within my composer.phar after php composer.phar update is called.
{
"require": {
"php": ">=5.4",
"ext-mcrypt": "*",
"slim/slim": "~2.0",
"slim/views": "0.1.*",
"twig/twig": "1.18.*",
"propel/propel": "~2.0#dev",
"zeflasher/propel2-geocodable-behavior": "dev-master",
"behat/behat": "3.0.*#stable",
"behat/mink": "1.6.*#stable",
"behat/mink-extension": "#stable",
"behat/mink-goutte-driver": "#stable",
"behat/mink-selenium2-driver": "#stable",
"peridot-php/leo": "~1.0"
},
"autoload": {
"classmap": ["website/", "vendor/"]
}
}
Is my current composer.json. Can anybody reproduce it? composer.phar is self-updated.
composer require symfony/process
That solved the issue. I don't know why its not included in behat.

Categories