Installing and setting up a Magento 2 extension
This is a guide for Magento 2. For Magento 1 extensions and guides, please refer to Magento 1 Guides.
Disclaimer: We recommend to install ANY extension you purchase/download in a testing environment before deploying it to your production environment. Please also backup your Magento installation (files and database) before installing any extension and make sure no conflicting extensions are installed. All XTENTO extensions were tested in clean Magento installations without third party extensions and we can't guarantee for compatibility with third party extensions.
General Installation Guide
Our Magento 2 extensions can also be installed via composer. See: https://www.xtento.com/composer/customer/ (Described below is the non-composer method)
The following steps are required to set up a XTENTO extension. Please follow them carefully as if you're missing one of the steps, the installation of the extension could fail which could lead to issues in your Magento installation. If the installation fails, or if you're seeing any error message, please try to re-install the module by starting from the first step again.
Warning for Mac OS users: If you are installing the extension in a local environment by copying the extensions files using Finder into a local directory, make sure to *merge* and not to *replace* the existing folders contents, as otherwise your app folder will be gone. Read more. Use a file manager that merges folders or a FTP client instead.
- Open the extension ZIP file you downloaded from the 'My Downloads' section on www.xtento.com and extract it to a directory on your computer using a tool like WinRar, WinZIP or similar.
- Upload the extracted folders and files into the root directory of your Magento installation. The root directory of Magento is the folder that contains the directories "app", "bin", "lib" and more. All folders should match the existing folder structure. If one of our extensions is already installed and you're updating it, make sure to overwrite the existing files of the extension.
- Connect via SSH and run the following commands (make sure to run them as the user who owns the Magento files! See output of "ls -la"):
- php bin/magento module:enable --clear-static-content Xtento_XtCore
- php bin/magento module:enable --clear-static-content Xtento_MODULENAME (replace with what you purchased, see ZIP filename, WITHOUT the version. For example: Xtento_OrderExport)
- php bin/magento maintenance:enable ; php bin/magento setup:upgrade ; php bin/magento setup:static-content:deploy ; php bin/magento setup:di:compile ; php bin/magento maintenance:disable
Please follow the extension specific setup steps (if any) now. Otherwise you're done with the installation.
Updating a XTENTO extension is easy: Simply follow the installation guide (see above) and overwrite any existing files. No need to run the module:enable commands, however it is very important you run setup:upgrade (php bin/magento setup:upgrade) after updating any Magento extension. Then, after updating, clear the contents inside the /var/cache/, /var/di/ and /var/generation/ (Magento 2.2+: generated/code) directories (located in the Magento root directory).
Installing a Magento Marketplace extension
If you purchased an extension on Magento Marketplace, there are two ways to install your extension:
1) Easy Method: Use the "Web Setup Wizard" and install via the Magento admin panel. Easy, as it fetches components/dependencies automatically. Just be sure to select the "Install dependencies" option when installing via the Web Setup Wizard.
2) Composer Method: See here.
3) Manual ZIP Method: You can also go the ZIP route. You can download the extension ZIP file from the "My Purchases" section on marketplace.magento.com. Be sure to download the "Xtento_XtCore" package as well, it's located in the "Packages" tab at "My Purchases" (Screenshot where to find the Xtento_XtCore package Important, as of October 2017 there's a bug on Marketplace that won't let you download the XtCore module. Click here to download it. (This only applies if you purchased the module on Marketplace and do a manual ZIP installation)).
First, upload the contents of the XtCore package. Then, create another folder called app/code/Xtento/MODULENAME/ where MODULENAME must be replaced by the modules internal identifier. You can find it in the "composer.json" file in the extension ZIP file you downloaded, look at the node "psr-4". For example, it could say "Xtento\\ProductExport\\" or "Xtento\\GridActions\\" there, then the MODULENAME is the part after \\ and before \\, so in our examples ProductExport" or "GridActions". This is what you call the folder, then, for example app/code/Xtento/ProductExport, and you put the contents of the extension ZIP file in there.
Then, install the extensions as stated above in our normal install guide: First install and enable Xtento_XtCore, then the extension you purchased.
Any questions, please do not hesitate to contact us.
Troubleshooting: Problems after installation
- Module doesn't show up in the backend / doesn't work: Try to manually refresh the cache by deleting the contents inside the /var/cache/ and /var/generation/ (Magento 2.2+: generated/code) directories (located in the Magento root directory).
- Module STILL doesn't show up in the backend / doesn't work: Make sure you have uploaded all files to the CORRECT location. This is very important - please do not forget to upload one or more files and make sure you upload it to the right location (Magento root directory)
- Module STILL doesn't show up: Make sure the file permissions for all the files uploaded are right. Files must be readable by the webserver.
- I get an error saying 'Class X' could not be found: Please go to through the installation process once again and make sure you have uploaded all files. This is very important - please do not forget to upload one or more files.
- Blank page / Error 500/503 / "Exception printing is disabled"? Probably an error. Please enable "developer mode" in Magento, for example via .htaccess, to see the real error message. Or, if that doesn't work, force display_errors/error_reporting by adding this at the beginning of index.php in Magento root directory (REMOVE THIS AFTER TESTING):
Still got problems? A fatal error you can't solve yourself? Please get in touch with us.
Error "Notice: Undefined index: id in Iterator.php"
If you get the following error message:
Notice: Undefined index: id in [...]/Model/Config/Structure/Element/Iterator.php on line 59
This means you forgot to install the "Xtento_XtCore" module. Install this base module first, and make sure it is enabled. It is included with the ZIP file. If you purchased the extension on Magento Marketplace, and installed the extension via Component Manager, you forgot to select "Install dependencies" when installing the extension.
Missing design / CSS in admin after setup:upgrade
This is usually due to wrong file permissions. You can deploy the static view files of Magento as described here: http://devdocs.magento.com/guides/v2.1/config-guide/cli/config-cli-subcommands-static-view.html
PHP Memory Limit
For Magento to properly work, the PHP memory_limit should be set to at least 256M (or even better 512M) as required by Magento: Magento System Requirements
You can check the set PHP memory_limit in phpinfo() or at System > Section: "XTENTO Extensions" > General Configuration > Tab "Debug Information".
If you get an error saying: "Fatal error: Allowed memory size of 123456789 bytes exhausted (tried to allocate xy bytes)" your PHP memory_limit must be increased.
If you get an error saying: "Fatal error: Out of memory (allocated 1234567) (tried to allocate 123456 bytes)" this is a different problem not caused by the PHP memory_limit. The following system memory limits may need to be increased:
- Test if you have any RLimitMEM in your Apache settings that may limit memory usage for Apache processes. You can use cd /etc/apache2/ && grep -irn 'RLimitMEM' to search for this configuration value.
- See if you have any security limits for the Apache user in /etc/security/limits.conf, or generally for users using ulimit -v
Uncaught TypeError: Argument 1 ... instance of Magento\Framework\ObjectManager\ObjectManager given
If you get this error with any of our extensions, please empty the var/di (Magento 2.2+: generated/metadata), var/cache and var/generation (Magento 2.2+: generated/code) folders of Magento.
Autoload error: Module 'Xtento_XtCore' from '/some/path/app/code/Xtento/XtCore' has been already defined
That's because you installed Xtento_XtCore twice, once via composer, once via uploading it directly into app/code/Xtento. Remove the app/code/Xtento/XtCore folder.
[ReflectionException] Class Xtento\XtCore\... does not exist
This means you forgot to install the Xtento_XtCore module. You probably did not upload the files of the XtCore extension. If you cannot find the XtCore extension and you purchased this extension on Magento Marketplace, please contact us so we can provide a copy of the XtCore module.
Composer update: Invalid credentials for ‘https://repo.xtento.com/packages.json’, aborting
If you're trying to run composer update or install and are getting the following error about the XTENTO repository (repo.xtento.com):
Invalid credentials for ‘https://repo.xtento.com/packages.json’, aborting
You either entered the wrong credentials (you can get them at "Composer Keys" at My Downloads on xtento.com) or something else went wrong.
To fix this, open the "auth.json" file (located either in the Magento root directory or the composer home directory) and update it like this (the bold part must be added, including the comma!):
"username": "<your public key>",
"password": "<your private key>"
"username": "<your public key>",
"password": "<your private key>"
Web Setup Wizard: Command "show" failed
If you get the following error in the Magento "Extension Manager" after installing one of our extensions via composer:
Command "show" failed: [Composer\Downloader\TransportException] The 'https://repo.xtento.com/packages.json' URL required authentication. You must be using the interactive console to authenticate show [--all] [-i|--installed] [-p|--platform] [-a|--available] [-s|--self] [-N|--name-only] [-P|--path] [-t|--tree] [-l|--latest] [-o|--outdated] [-m|--minor-only] [-D|--direct] [--strict] [-f|--format FORMAT] [--] [<package>] [<version>]
You will need to do the following:
1) Make sure auth.json (see above - Composer update: Invalid credentials for... article) is set up properly, including XTENTO authentication keys
2) Make sure auth.json has appropriate file permissions so the Magento webserver can read the file
3) If nothing helps, copy auth.json into the Magento root directory