Magento 2 specific tasks for Capistrano 3

Overview

Capistrano::Magento2

Gem Version

A Capistrano extension for Magento 2 deployments. Takes care of specific Magento 2 requirements and adds tasks specific to the Magento 2 application. Supports zero-down deployments based on differences in deployed config.php and db status as reported by Magento's setup:db:status CLI command. When themes and scopes have been dumped to config.php via bin/magento app:config:dump scopes themes i18n then zero-side-effect pipeline will be utilized such that no database nor cache backend configuration are available during the build process.

Supported Magento Versions

The following describes minimum Magento versions supported by releases of this gem. Please use an earlier version to deploy older releases of Magento not supported by the most recent iterations of this gem.

  • Version 0.9.x supports deployment of Magento 2.3.0 and later.
  • Version 0.7.x supports deployment of Magento 2.1.1 and later.

Installation

Standalone Installation

$ gem install capistrano-magento2

Using Bundler

  1. Add the following to your project's Gemfile:

    source 'https://rubygems.org'
    gem 'capistrano-magento2'
  2. Execute the following:

     $ bundle install
    

Usage

  1. Install Capistrano in your Magento project:

    $ cd <project_root>
    $ mkdir -p tools/cap
    $ cd ./tools/cap
    $ cap install

Note: By default, Capistrano creates "staging" and "production" stages. If you want to define custom staging areas, you can do so using the "STAGES" option (e.g. cap install STAGES=stage,prod). Built-in notifications (see below) confirm deploy action on both "production" and "prod" area names by default.

  1. Update your project's Capfile to look like the following:

    # Load DSL and set up stages
    require 'capistrano/setup'
    
    # Load Magento deployment tasks
    require 'capistrano/magento2/deploy'
    require 'capistrano/magento2/pending'
    
    # Load Git plugin
    require "capistrano/scm/git"
    install_plugin Capistrano::SCM::Git
    
    # Load custom tasks from `lib/capistrano/tasks` if you have any defined
    Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
  2. Configure Capistrano, per the Capistrano Configuration section below.

  3. Configure your server(s), per the Server Configuration section below.

  4. Deploy Magento 2 to staging or production by running the following command in the tools/cap directory:

    $ cap staging deploy

    or

    $ cap production deploy

Default Configuration

Capistrano Configuration

Before you can use Capistrano to deploy, you must configure the config/deploy.rb and config/deploy/*.rb files. This section will cover the basic details for configuring these files. Refer to the Capistrano documentation and README for more details.

  1. Configuring config/deploy.rb

    Update the :application and :repo_url values in config/deploy.rb:

    # Something unique such as the website or company name
    set :application, 'example'
    # The repository that hosts the Magento 2 application (Magento should live in the root of the repo)
    set :repo_url, 'git@github.com:acme/example-com.git'
  2. Configuring config/deploy/*.rb files

    Capistrano allows you to use server-based or role-based syntax. You can read through the comments in the file to learn more about each option. If you have a single application server then the server-based syntax is the simplest configuration option.

    • Single application server

      If your stage and production environments consist of a single application server, your configuration files should look something like this:

      config/deploy/production.rb

      server 'www.example.com', user: 'www-data', roles: %w{app db web}
      
      set :deploy_to, '/var/www/html'
      set :branch, proc { `git rev-parse --abbrev-ref master`.chomp }

      config/deploy/staging.rb

      server 'stage.example.com', user: 'www-data', roles: %w{app db web}
      
      set :deploy_to, '/var/www/html'
      set :branch, proc { `git rev-parse --abbrev-ref develop`.chomp }
    • Multiple application servers

      Refer to the "role-based syntax" comments in the config/deploy/*.rb files or to the Capistrano documentation for details on how to configure multiple application servers.

Magento Deploy Settings

setting default what it does
:magento_deploy_setup_role :all Role from which primary host is chosen to run things like setup:upgrade on
:magento_deploy_cache_shared true If true, cache operations are restricted to the primary node in setup role
:magento_deploy_languages [] Array of languages passed to static content deploy routine
:magento_deploy_themes [] Array of themes passed to static content deploy
:magento_deploy_jobs nil Number of threads to use for static content deploy
:magento_deploy_composer true Enables composer install behavior in the built-in deploy routine
:magento_deploy_production true Enables production specific DI compilation and static content generation
:magento_deploy_no_dev true Enables use of --no-dev flag on composer install
:magento_deploy_maintenance true Enables use of maintenance mode while magento:setup:upgrade runs
:magento_deploy_confirm [] Used to require confirmation of deployment to a set of capistrano stages
:magento_deploy_chmod_d '2770' Default permissions applied to all directories in the release path
:magento_deploy_chmod_f '0660' Default permissions applied to all non-executable files in the release path
:magento_deploy_chmod_x ['bin/magento'] Default list of files in release path to set executable bit on
:magento_deploy_chcon_dirs ['var'] Default list of directories on which to recursively set an SELinux context type
:magento_deploy_chcon_type httpd_sys_rw_content_t Default SELinux context type to set on directories which should be writeable by application
:magento_deploy_strategy nil Can be quick, standard or compact

Example Usage

Add a line similar to the following in config/deploy.rb to set a custom value on one of the above settings:

set :magento_deploy_jobs, '$(nproc)'
set :magento_deploy_themes, ['Magento/backend', 'Magento/blank']
set :magento_deploy_languages, ['en_US', 'en_CA']

Capistrano Built-Ins

For the sake of simplicity in new project setups :linked_dirs and :linked_files are pre-configured per the following.

set :linked_files, [
  'app/etc/env.php',
  'var/.setup_cronjob_status',
  'var/.update_cronjob_status'
]

set :linked_dirs, [
  'pub/media',
  'pub/sitemaps',
  'var/backups', 
  'var/composer_home', 
  'var/importexport', 
  'var/import_history', 
  'var/log',
  'var/session', 
  'var/tmp'
]

If you would like to customize the linked files or directories for your project, you can copy either one or both of the above arrays into the config/deploy.rb or config/deploy/*.rb files and tweak them to fit your project's needs. Alternatively, you can add a single linked dir (or file) using append like this:

append :linked_dirs, 'path/to/link'

Composer Auth Credentials

Magento 2's composer repository requires auth credentials to install. These can be set on target servers in a global composer auth.json file, the project's composer.json or by setting them in your deployment configuration using the following two settings:

set :magento_auth_public_key, '<your_public_key_here>'
set :magento_auth_private_key, '<your_prviate_key_here>'

To obtain these credentials, reference the official documentation on DevDocs: Get your authentication keys

Caution: When using these settings, the values will be logged to the log/capistrano.log file by SSHKit. They will not, however, be included in the general command output by default.

Magento 2 Deploy Routine

A pre-built deploy routine is available out-of-the-box. This can be overriden on a per-project basis by including only the Magento 2 specific tasks and defining your own deploy.rake file under lib/capistrano/tasks in your projects Capistrano install location.

To see what process the built-in routine runs, take a look at the included rake file here: https://github.com/davidalger/capistrano-magento2/blob/master/lib/capistrano/tasks/deploy.rake

Server Configuration

Web Server Root Path

Before deploying with Capistrano, you must update each of your web servers to point to the current directory inside of the configured :deploy_to directory. For example: /var/www/html/current/pub Refer to the Capistrano Structure to learn more about Capistrano's folder structure.

PHP Opcache Reset

When doing atomic deployments with php-opcache installed on a server, the cache will reach a full state after which application performance will degrade as a result of the opcache not being able to do it's job. To work nicely with this, there is support included for automatically resetting the php-opcache after a release is published.

To use this, include require 'capistrano/magento2/cachetool' in your Capfile and make sure there is an /etc/cachetool.yml or /var/www/html/.cachetool.yml (assuming :deploy_to points at /var/www/html) file configured with contents like the following:

adapter: fastcgi
fastcgi: /var/run/php-fpm/www-data.sock
temp_dir: /dev/shm/cachetool
extensions: [ opcache ]

With this configuration in place, be sure cachetool (available from here) has already been installed on the server and is available in $PATH.

Congratulations! You should now begin to see the pre-deployemnt opcache status information when running a deployment followed immediately be the cachetool opcache:reset command used to keep things humming nicely along.

Magento Specific Tasks

All Magento 2 tasks used by the built-in deploy.rake file as well as some additional commands are implemented and exposed to the end-user for use directly via the cap tool. You can also see this list by running cap -T from your shell.

cap command what it does
magento:cache:clean Clean Magento cache by types
magento:cache:disable Disable Magento cache
magento:cache:enable Enable Magento cache
magento:cache:flush Flush Magento cache storage
magento:cache:status Check Magento cache enabled status
magento:cache:varnish:ban Add ban to Varnish for url(s)
magento:composer:install Run composer install
magento:deploy:mode:production Enables production mode
magento:deploy:mode:show Displays current application mode
magento:indexer:info Shows allowed indexers
magento:indexer:reindex Reindex data by all indexers
magento:indexer:set-mode[mode,index] Sets mode of all indexers
magento:indexer:show-mode[index] Shows mode of all indexers
magento:indexer:status Shows status of all indexers
magento:maintenance:allow-ips[ip] Sets maintenance mode exempt IPs
magento:maintenance:disable Disable maintenance mode
magento:maintenance:enable Enable maintenance mode
magento:maintenance:status Displays maintenance mode status
magento:setup:di:compile Runs dependency injection compilation routine
magento:setup:permissions Sets proper permissions on application
magento:setup:static-content:deploy Deploys static view files
magento:setup:upgrade Run the Magento upgrade process

Pending Changes Support

When the line require 'capistrano/magento2/pending' is included in your Capfile per the recommended configuration above, this gem will report changes pending deployment in an abbreviated git log style format. Here is an example:

00:00 deploy:pending:log
      01 git fetch origin
    ✔ 01 dalger@localhost 1.241s01 dalger@localhost 1.259s
      Changes pending deployment on web1 (tags/2.1.2 -> 2.1):
      f511288 Thu Feb 23 12:19:20 2017 -0600 David Alger (HEAD -> 2.1, tag: 2.1.4, origin/2.1) Magento 2.1.4
      7fb219c Thu Feb 23 12:17:11 2017 -0600 David Alger (tag: 2.1.3) Magento 2.1.3
      570c9b3 Thu Feb 23 12:12:43 2017 -0600 David Alger Updated capistrano configuration
      No changes to deploy on web2 (from and to are the same: 2.1 -> 2.1)

When there are no changes due for deployment to any host, a warning requiring confirmation will be emitted by default:

No changes to deploy on web1 (from and to are the same: 2.1 -> 2.1)
No changes to deploy on web2 (from and to are the same: 2.1 -> 2.1)
Are you sure you want to continue? [y/n]

This confirmational warning can be disabled by including the following in your project's configuration:

set :magento_deploy_pending_warn, false

Pending Changes Configuration

setting what it does
:magento_deploy_pending_role Role to check for pending changes on; defaults to :all
:magento_deploy_pending_warn Set this to false to disable confirmational warning on zero-change deployments
:magento_deploy_pending_format Can be used to set a custom change log format; refer to defaults.rb for example

Pending Changes Tasks

cap command what it does
deploy:pending Displays a summary of commits pending deployment

Note: For more details including screenshots of what this functionality does, reference this post.

Terminal Notifier on OS X

This gem includes an optional configuration file include which adds notification support via the terminal-notifier gem. To configure notifications, simply add the following line to your Capfile:

require 'capistrano/magento2/notifier'

Notice: The terminal-notifier gem is currently macOS specific and thus can not be used on generic *nix environments. Because this gem has been known to cause ruby stability issues on certain non-macOS environments, it is not specified as a hard requirement in this gem's gemspec. When using this functionality, it is expected the gem either be already present on your working environment or be added to your project's Gemfile:

gem 'terminal-notifier'

Development

After checking out the repo, run bundle install to install dependencies. Make the necessary changes, then run bundle exec rake install to install a modified version of the gem on your local system.

To release a new version, update the version number in capistrano/magento2/version.rb, merge all changes to master, and then run bundle exec rake release. This will create a git tag for the version (the tag will apply to the current HEAD), push git commits and tags, and push the .gem file to rubygems.org.

Note: Releasing a new version of the gem is only possible for those with maintainer access to the gem on rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/davidalger/capistrano-magento2.

License

This project is licensed under the Open Software License 3.0 (OSL-3.0). See included LICENSE file for full text of OSL-3.0.

Comments
  • Setup:upgrade running multiple times on multi-server enviroment

    Setup:upgrade running multiple times on multi-server enviroment

    We're running a site over multiple servers and when running a deployment that includes any changes to the DB, we were getting errors due to the setup:upgrade running on all the servers and trying to make the the same DB change multiple times.

    It would be great if setup:upgrade only ran on the servers with a role of "db", rather than how it is currently configured to run for 'all' roles.

    opened by KevinMace 17
  • Add ability to apply patches after

    Add ability to apply patches after "composer install"

    There are a couple of instances where it would be useful to be able to apply patches after "composer install" is run: patches provided by Magento Enterprise support and patches to resolve small issues that have yet to be rolled into a new release.

    The patching functionality needs to be able to handle applying traditional .patch files as well as patches contained within shell scripts provided by Magento Enterprise support. My idea would be to have a patch directory at the root of the Magento install. Any .patch files contained in this folder would be automatically applied. .sh or files with no extension (the patch files provided by Magento don't always have extensions) would be executed by source.

    Any failure in applying patches or shell scripts would need cause the deployment to fail. I just reviewed a patch script provided Magento Enterprise and any failure in applying the patch returns a non-zero exit code, so this should be simple. patch also returns a non-zero exit code

    The other thing to consider would be how developers would apply the patch files on their local development machines.

    @davidalger I'd be curious to hear your thoughts on how this should be implemented. Also, do you think you'd have any time to implement this over the few weeks?

    enhancement 
    opened by erikhansen 14
  • Deploying a new theme fails

    Deploying a new theme fails

    When deploying a new theme, it fails because setup:static-content:deploy runs before setup:upgrade and there is no such theme found in theme table in database.

    Error thrown is:

    Unable to load theme by specified key: '<vendor>/<theme>' 
    

    Wonder if static content should not be moved after setup upgrade.

    enhancement up for grabs 
    opened by avra911 12
  • Permissions issue after deployment

    Permissions issue after deployment

    nginx is running as www-data, deployment is via another use account

    2016/09/27 13:23:41 [crit] 20330#20330: *2085 stat() "/var/www/vhosts/xx/current/pub/" failed (13: Permission denied), client: 127.0.0.1, server: www.xxx.com, request: "GET / HTTP/1.1", host: "www.xxx.com"
    2016/09/27 13:23:41 [crit] 20330#20330: *2085 stat() "/var/www/vhosts/xxx/current/pub/" failed (13: Permission denied), client: 127.0.0.1, server: www.xxx.com, request: "GET / HTTP/1.1", host: "www.xxx.com"
    2016/09/27 13:23:41 [crit] 20330#20330: *2085 stat() "/var/www/vhosts/xxx/current/pub/index.php" failed (13: Permission denied), client: 127.0.0.1, server: www.xxx.com, request: "GET / HTTP/1.1", host: "www.xxx.com"
    

    Is it possible to make the permissions being set an option also? Thank you

    If not if you have any idea how to fix this! :)

    opened by craigcarnell 11
  • Error: There are no commands defined in the

    Error: There are no commands defined in the "setup:static-content" namespace

    Available commands: help list admin admin:user:create i18n i18n:collect-phrases i18n:pack info info:adminuri info:backups:list info:currency:list info:dependencies:show-framework info:dependencies:show-modules info:dependencies:show-modules-circular info:language:list info:timezone:list maintenance maintenance:allow-ips maintenance:disable maintenance:enable maintenance:status module module:disable module:enable module:status module:uninstall sampledata sampledata:deploy sampledata:remove setup setup:backup setup:config:set setup:cron:run setup:db-data:upgrade setup:db-schema:upgrade setup:db:status setup:di:compile setup:di:compile-multi-tenant setup:install setup:performance:generate-fixtures setup:rollback setup:store-config:set setup:uninstall setup:upgrade

    opened by Serhiy-Nazarov 11
  • Zero downtime on non-upgrade deployments

    Zero downtime on non-upgrade deployments

    The current deployment process uses bin/magento setup:upgrade for the purpose of upgrading the schema and data in a Magento 2 installation if needed. This command also re-generates the app/etc/config.php file. Due to the errors Magento 2 will throw up if a site has modules requiring schema and/or data updates installed, the site must be put into maintenance mode before linking the new release and running setup:upgrade. This results in a downtime between 5 and 8 seconds on average (by my rather unscientific estimation based on real-life experience… ;)).

    Stated goal of this task: eliminate all downtime for deployments which do not trigger schema or data upgrades.

    Additionally, as the app/etc/config.php file is regenerated by the setup:ugprade command, this causes a potential fringe situation on a multi-node cluster deployment (as of 0.5.3) where setup:upgrade updates this file on one (but not all) nodes in the deployment. This is only an issue if the config.php file re-created when this runs is different (for some reason or other) than the one committed to the repository. Eliminating the use of setup:upgrade will have the effect of eliminating this potential issue as well.

    At the suggestion of @hostep over on issue #33 I went looking into the use of setup:db:status and found the following:

    1. The built-in setup:db:status command will report on whether or not any installed module(s) require schema and/or data upgrade. Example output of this command:

      All modules are up to date.
      

      or

      The module code base doesn't match the DB schema and data.
               Magento_Cms     schema:       2.0.0  ->  2.0.1      
            Magento_Bundle       data:       2.0.0  ->  2.0.2      
      Run 'setup:upgrade' to update your DB schema and data.
      

    The command returns the same exit code of 0 regardless of the db status.

    1. There are also two other interesting built-in console commands, setup:db-schema:upgrade and setup:db-data:upgrade. Upon my investigation into the code, the difference between these commands and setup:upgrade is the following:

      setup:upgrade calls updateModulesSequence, installSchema, and installDataFixtures whereas the other two commands only call installSchema and installDataFixtures respectively.

    2. These additional commands are available in versions 2.0 and 2.1 making no special version checks necessary.

    The result of this task will be to cease use of setup:upgrade and transition to only calling the schema/data upgrade specific tasks on deploy, eliminating the potential fringe issue with a deploy creating unexpected changes to config.php as well as eliminate all downtime on deploys which do not introduce module (schema and/or data) version changes.

    enhancement 
    opened by davidalger 10
  • Question: dealing with consumers

    Question: dealing with consumers

    Hi @davidalger

    I've got a question about dealing with consumers that are started up using the magento cron. Currently, for each deployment a new set of coinsumers is started up but the old ones are not removed as the the PID in the var directory is valid for both (not linked in shared). How might we be able to deal with them so that the old consumers are killed off in favour of the new ones?

    Thanks

    opened by valguss 9
  • Terminal notifier outputs garbage to screen in linux

    Terminal notifier outputs garbage to screen in linux

    Hello,

    I'm using your gem in linux (with zsh shell) and at the end of a deploy terminal notifier spits out some garbage text (see screenshot).

    screenshot

    Also, terminal notifier outputs the same even in other unrelated commands I call (eg, vagrant or ansible). Since it is not essential can the dependency be removed? I tried to google around to find some solutions but can't find anything.

    opened by giacmir 9
  • Run setup:upgrade before compile assets

    Run setup:upgrade before compile assets

    Hello,

    It will be great to run setup:upgrade before compile assets. This way, we will not get errors like :

    • Unable to resolve the source file for 'adminhtml/Theme/admin/fr_FR/js/theme.js'

    Reproduction steps :

    • Create an admin theme
    • Apply this admin theme by default with a file web/theme.js
    • Deploy

    Command bin/magento setup:static-content:deploy will have errors

    wontfix 
    opened by sebfie 8
  • Deployment continues even when setup:static-content:deploy contains exception

    Deployment continues even when setup:static-content:deploy contains exception

    There is a long-standing bug that prevents new themes from being registered when Magento is in production mode. This means that when Capistrano tries to deploy a new theme to the server, an error like [LogicException] Unable to load theme by specified key: 'ClassyLlama/example' will occur.

    This Gem is not recognizing this output as an error, so the deployment proceeds even after error is triggered:

    23-02-31 new message-dfojq

    I would think the https://github.com/davidalger/capistrano-magento2/blob/master/lib/capistrano/magento2.rb#L44..L48 section should be expanded to check for the presence of [.*Exception] in the output. Doing this search will catch the different types of exceptions that can be thrown during asset compilation. Look at the two exceptions in this method for an example: https://github.com/magento/magento2/blob/1ade3b769a937f19682bbbe4e51b6c956147952f/lib/internal/Magento/Framework/View/Design/Theme/FlyweightFactory.php#L53

    bug enhancement 
    opened by erikhansen 8
  • Static asset compilation errors are ignored

    Static asset compilation errors are ignored

    I'm using Magento EE 2.1.1 with Capistrano 0.5.1. Capistrano is ignoring static asset compilation errors. Screenshot demonstrating problem (I changed command_output to true to see all output for the sake of debugging):

    16-15-09 new message-wt45z

    In this commit, the explicit check for the "Compilation from source" error message was removed. In order to fix this issue, I propose that this check gets added back (and possibly ALSO check for the presence of the "New version of deployed files" success message).

    If you'd like me to submit this as a PR, let me know.

    opened by erikhansen 8
  • touch: cannot touch '/var/www/html/releases/20220809134142/pub/static/deployed_version.txt'  No such file or directory

    touch: cannot touch '/var/www/html/releases/20220809134142/pub/static/deployed_version.txt' No such file or directory

    Hi, I´m getting an error when I deploy to my stage enviroment. Does anybody have any clue why this error shows up? Thanks in advance for your ideas!

    DEBUG [ced9d344] Magento CLI 2.4.3 DEBUG [ced9d344] Finished in 0.438 seconds with exit status 0 (successful). DEBUG [9927b544] Running if test ! -d /var/www/html/releases/20220809134142; then echo "Directory does not exist '/var/www/html/releases/20220809134142'" 1>&2; false; fi as root@xxx.xxx.xx.xxx DEBUG [9927b544] Command: if test ! -d /var/www/html/releases/20220809134142; then echo "Directory does not exist '/var/www/html/releases/20220809134142'" 1>&2; false; fi DEBUG [9927b544] Finished in 0.140 seconds with exit status 0 (successful). INFO [d9bb4f40] Running /usr/bin/env touch /var/www/html/releases/20220809134142/pub/static/deployed_version.txt as root@xxx.xxx.xx.xxx DEBUG [d9bb4f40] Command: cd /var/www/html/releases/20220809134142 && ( export MAGE_MODE="production" ; /usr/bin/env touch /var/www/html/releases/20220809134142/pub/static/deployed_version.txt ) DEBUG [d9bb4f40] touch: cannot touch '/var/www/html/releases/20220809134142/pub/static/deployed_version.txt' DEBUG [d9bb4f40] : No such file or directory

    opened by andek85 1
  • How can I flush cache file on multi server

    How can I flush cache file on multi server

    Hi, My website on multi server have using cache file on server, after deploy we just clear cache on opcache. We need to edit task clear cache "invoke 'magento:cache:flush'". But it's doesnt support us to add flush cache again. How can I add task with execute command linux or How can I flush cache file on multi server.

    opened by kalumbum 1
  • How to handle initial setup:install

    How to handle initial setup:install

    Thanks for the extension, I used Capistrano extensively for M1 and more recently for Laravel projects so it is really nice to see Capistrano tooling for M2

    I can't see anything but can this extension handle the inital setup:install to initialise the db and create the initial env.php? If not I'm curious what manual process do others use or has anyone written their own rake task for this?

    opened by bluec 1
  • Issue: Cached metadata/generated files

    Issue: Cached metadata/generated files

    I've been seeing an issue for a while now that I think relates to OPCache and generated metadata. It's not easy to replicate, but usually clears on subsequent deployments.

    There are two scenarios I have seen:

    • Addition of new plugin, this plugin doesn't fire until after second deployment with no code changes.
    • Addition of new extension attributes - new attributes don't get added to generated class even after new deployment, causing site errors, solution has previously been to copy locally generated correct class onto server to replace cap generated file.

    I think this is related to OPCaching of generated files, we use the cap opcache tool but this only clears opcache at the end of each deployment

    opened by edward-simpson 7
  • When execute command cap staging deploy

    When execute command cap staging deploy

    When i run cap staging deploy i got Errorr

    DEBUG [5050e3d8] PHP Warning: require(/home/tricktionary/public_html/releases/20211210131149/vendor/composer/../symfony/polyfill-php81/bootstrap.php): failed to open stream: No such file or directory in /home/tricktionary/public_html/releases/20211210131149/vendor/composer/autoload_real.php on line 75

    PHP Fatal error: require(): Failed opening required '/home/tricktionary/public_html/releases/20211210131149/vendor/composer/../symfony/polyfill-php81/bootstrap.php' (include_path='/home/tricktionary/public_html/releases/20211210131149/vendor/magento/zendframework1/library:.:/usr/share/php') in /home/tricktionary/public_html/releases/20211210131149/vendor/composer/autoload_real.php on line

    opened by Naeem-Dhattiwala 0
  • Doesn't work with PHP 7.4 and Magento 2..42

    Doesn't work with PHP 7.4 and Magento 2..42

    Hi !

    With Magento 2.4.2 and PHP 7.4.X,t he deployment doesn't work due to php's version in update/ directory. I've tried to update the Magento updater with this documentation: https://devdocs.magento.com/guides/v2.3/comp-mgr/updater/update-updater.html but without success.

    To resolve this issue, I've deleted the update/ folder and all works fine. Do you think it would be possible to add a parameter not to update the updater?

    https://github.com/davidalger/capistrano-magento2/blob/master/lib/capistrano/tasks/magento.rake#L132

    Thanks !

    opened by walkwizus 4
Owner
David Alger
Principal SRE, Software Engineer, Infrastructure, DevOps, Magento Master, Cloud Architect, AWS, GCP, Terraform, Ansible, Kubernetes
David Alger
Magento specific extension for phpstan

bitexpert/phpstan-magento This package provides some additional features for PHPStan to make it work for Magento 2 projects. Installation The preferre

bitExpert AG 92 Dec 7, 2022
Package to send customer specific prices to Magento from a Laravel application using a configurable source.

Laravel Magento Customer Prices This package provides a way to add customer specific prices to Magento from a Laravel app. By default, it uses the Mag

JustBetter 14 Nov 4, 2022
A tool that allows to quickly export data from Magento 1 and Magento 2 store and import it back into Magento 2

Simple Import / Export tool A tool that allows to quickly export data from Magento 1 and Magento 2 store and import it back into Magento 2. Table data

EcomDev B.V. 51 Dec 5, 2022
Execute time consuming tasks as late as possible in a request

Procrastinator for PHP: do stuff later A few classes to help you executing complicated tasks (like sending mails) later. Example using fastcgi_finish_

Lars Strojny 62 Apr 29, 2021
A Symfony bundle built to schedule/consume repetitive tasks

Daily runs Code style Infection PHPUnit Rector Security Static analysis A Symfony bundle built to schedule/consume repetitive tasks Main features Exte

Guillaume Loulier 98 Jan 4, 2023
PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language

php-text-analysis PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP l

null 464 Dec 28, 2022
Simple PHP/Laravel app that displays Todoist tasks in a view designed for a Kindle Touch

productivity-dashboard Just a simple PHP/Laravel app that retrieves (so far) tasks from Todoist and displays them in a simple view designed for a Kind

null 7 Dec 9, 2022
Simple PHP/Laravel app that displays Todoist tasks in a view designed for a Kindle Touch

productivity-dashboard Just a simple PHP/Laravel app that retrieves (so far) tasks from Todoist and displays them in a simple view designed for a Kind

null 3 Dec 27, 2021
Composer plugin to automate the most common tasks of applications.

Narrowspark Automatic Narrowspark Automatic automates the most common tasks of applications, like installing and removing bundles or providers, copyin

Narrowspark 12 Sep 9, 2022
Commands and implementations for common tasks for the PHP Content Repository (PHPCR) API.

PHPCR Utilities Commands and implementations for common tasks for the PHP Content Repository (PHPCR) API. If you are using or implementing PHPCR you p

PHPCR 65 Nov 20, 2022
Orangescrum is a simple yet powerful free and open source project management software that helps team to organize their tasks, projects and deliver more.

Free, open source Project Management software Introduction Orangescrum is the simple yet powerful free and open source project management software tha

Orangescrum 110 Dec 30, 2022
Box of Tricks for common PrePress related tasks.

PrePress Tricks Library Box of Tricks for common PrePress related tasks. Table of Contents Purpose Installation Basic Usage Purpose If you have ever a

null 1 Jul 26, 2022
Tool to remove code based on specific comments.

PHP-DEL Tool to remove code based on specific comments. Configuration Create php-del.json in the root directory of the project { "dirs": [ "src"

KenjiroKubota 16 Dec 25, 2022
An object store for specific objects.

Object Storage A simple object storage class that will only allow "supported" objects. class MyObjectStorage extends Herrera\Util\ObjectStorage {

KHerGe - Archived Projects 17 Jan 31, 2020
A simple way to know if you are on the list of major security breaches like "HIBP", but it is specific for Iran.

Leakfa.com A simple way to know if you are on the list of major security breaches like "HIBP", but it is specific for Iran. Service content This produ

Leakfa 100 Nov 20, 2022
A PocketMine-MP Plugin that allow you to change your nickname to specific colors

General Home A PocketMine-MP Plugin that allow you to change your display nametag to specific colors Made By BabosApple And Updated To PM4 By ZhorifCr

ZhorifCraft451 0 Feb 22, 2022
Json-normalizer: Provides generic and vendor-specific normalizers for normalizing JSON documents

json-normalizer Provides generic and vendor-specific normalizers for normalizing JSON documents. Installation Run $ composer require ergebnis/json-nor

null 64 Dec 31, 2022
This plugin can be embedded in PHP application to give the web application specific routes/href

Routes Plugin PHP This plugin can be embedded in PHP application to give the web application specific routes/href location and for entering specific/l

Ifechukwudeni Oweh 7 Jul 17, 2022