Installing Magento 2 Extensions : Troubleshooting

From Moogento How-to Guides
Revision as of 10:05, 11 August 2020 by <bdi>Moo</bdi> (talk | contribs)
Jump to navigation Jump to search

Contents

Magento Help

Something unexpected happened?

Try not to worry too much, take a deep breath and read through these common issues and solutions below.

Most issues have been seen before and are quickly fixable or at least revertible-from.

 


"After install I get 'Fatal error: Uncaught Error: Call to a member function getNext() on null in Interceptor.php'"

Check that you've run setup:di:compile, from the Magento root:
php bin/magento setup:di:compile
If that doesn't work right away, we can get a bit deeper:
php bin/magento maintenance:enable
rm -rf generated/ var/view_preprocessed/ var/composer_home/cache/ var/cache/ var/page_cache/
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy -f
php bin/magento cache:flush
php bin/magento maintenance:disable

"After install I get a '500 Internal Server Error' in the browser"

  1. Check your server error logs first:
    Where this is will depend on your server. Here's some common examples:
    Centos: {server root}/var/log/httpd/
    Debian, Ubuntu: {server root}/var/log/apache2/
    MAMP: {Applications}/MAMP/logs/php_error.log apache_error.log
    MageMojo: /home/log/apache/error.log
    Access eg. via nano /var/log/httpd/apache_error.log
  2. If the error isn't apparent in those logs, you might have some old static content that needs a tickle:
    1. Move pub/static/.htaccess somewhere out of that folder
    2. Delete /pub/static : rm -R pub/static
    3. Run php bin/magento setup:static-content:deploy
    4. Replace .htaccess in pub/static
    Or in one line:
    php bin/magento maintenance:enable
    mv pub/static/.htaccess pub/.htaccess
    rm -R pub/static
    php bin/magento setup:static-content:deploy
    mv pub/.htaccess pub/static/.htaccess
    php bin/magento maintenance:disable
  3. If that didn't help, you might have some old composer files causing issues.
    1. Delete /vendor : rm -R vendor
    2. Run composer update


"After install I get a fatal error, with 'Unable to retrieve deployment version of static files from the file system' in the reports"

Try running:

php bin/magento setup:static-content:deploy


"When entering the license key, it spins and doesn't save"

  • Check that you have the openssl_public_encrypt PHP function enabled on your server
Some dev servers have this off by default
  • Also check the system logs in var/logs
  • Finally check your server log files to see what's happening

If those don't resolve the issue, get in touch and we'll check it out.


"After install I get images missing, or a server error: 'Forbidden: PHP is disable.'"

  1. Open /pub/static/.htaccess
  2. Prefix the middle lines here with a # (to comment them out):
    <IfModule mod_php5.c>
    php_flag engine 0
    </IfModule&dt;
    <IfModule mod_php7.c>
    php_flag engine 0
    </IfModule&dt;
    So they look like this:
    <IfModule mod_php5.c>
    #php_flag engine 0
    </IfModule&dt;
    <IfModule mod_php7.c>
    #php_flag engine 0
    </IfModule&dt;
  3. Also check the correct magento file permissions are set

"I see an unstyled admin page"

Seeing some plainer-than-usual displays?

magento-2-admin-unstyled.png
magento-2-dashboard-unstyled.png

You might have some older static content that needs re-creating.

Try: php bin/magento setup:static-content:deploy -f

"I get this error: 'The following modules are outdated'"

It might also say Moogento_{module} db schema version: defined in codebase - {v1), currently installed - {not v1).

  1. Load up your Magento database, eg. in phpMyAdmin
  2. Find the {possible_prefix_}setup_module table
  3. Find the entry relating to the module mentioned, eg. 'Moogento_Pickpack'
  4. Delete that entry
  5. Run bin/magento setup:upgrade to recreate the correct line

"When I activate a plugin, I get a 'circular dependency' error in admin"

If you see this, your install hasn't completed correctly.

Try this:

  1. Check you've registered all your dev & live domains in your Moogento account for the correct key.
  2. Backup your site files & database
  3. Enable Maintenance Mode.
  4. Re-copy all plugin files from the latest version.
  5. Check there's not multiple admin users logged in.
  6. Reset the install tag, according to this method.
  7. Remove generated files (see here for details):
    rm -rf generated/metadata/* generated/code/* vendor/* var/cache/* var/generation/* var/view_preprocessed/* var/page_cache/* pub/static/frontend/* pub/static/adminhtml/* -R
  8. Update composer (re-generate the /vendor folder):
    composer update
    php bin/magento setup:upgrade
  9. Compile (re-generate files):
    php bin/magento setup:di:compile
  10. Set file & folder permissions:
    find . -type f -exec chmod 644 {} \;
    find . -type d -exec chmod 755 {} \;
  11. Check the file ownership. You should have a specific server user (not root) that runs magento.
    eg. if that user is 'magento_user:
    chown -R magento_user:magento_user *
  12. Update Magento db:
    php bin/magento setup:db-schema:upgrade
  13. Reindex & clear caches:
    php bin/magento indexer:reindex
    php bin/magento cache:clean && php bin/magento cache:flush && php bin/magento cache:enable
  14. Disable maintenance mode:
    php bin/magento maintenance:disable

"Running compile hangs with no errors"

Part of running Magento 2 stores is running compile (including when installing plugins):

bin/magento setup:di:compile -vvv

but, sometimes this hangs with no indication what's up.

There's a couple things we can do.

  • Try with '-vvv' to show more info
bin/magento setup:di:compile -vvv
  • In app/bootstrap.php around line 11, enable ini_set('display_errors', 1);

then re-run compile.

"I get an error like 'Base table or view not found: (eg. moogentoshipeasycolumn) doesn't exist'"

This generally means there's a mismatch in tables in the database.

The cause is usually an incomplete install, if you skipped updates over a long time period, and sometimes from trying to use an extension without registering the license key.

The solution is to restart the module install in Magento, by removing the entry from the 'setup_module' table in your db.

eg. for M2 stockEasy the line is 'Moogento_Stockeasy'. Just remove that line and re-run the M2 database setup command.

  1. Delete the relevant line from setup_module, eg:
    restart-magento-plugin-install.png
  2. Run the db update command:
    php bin/magento setup:upgrade

Removing db entries for the plugins will remove settings related to that plugin

* If you have specific settings saved to the plugin that you want to keep, export the relevant tables/entries first
* After re-install you can then import/replace the relevant entries

Suggestions

These are not required, but to keep the db trim, it can be a good idea.

  • If you're restarting the install, removing tables related to the same plugin at the same time can be a good way to get a fresh setup.
* Recent Moogento plugins will usually name the tables like {moogento}_{plugin}_{specific} eg. moogento_stockeasy_columns
* eg. SQL: SHOW TABLES LIKE "%moo%"
^ Don't delete all entries unless you're re-installing *all* moogento modules!
  • Also remove entries from core_config_data
* Recent Moogento plugins will usually name the entries like {moogento or moo}_{plugin}/{specific} eg. moogento_stockeasy/grid_colors
* eg. SQL: SELECT * FROM `mg_core_config_data` WHERE `path` LIKE '%moo%' ORDER BY `path` DESC
^ Don't delete all entries unless you're re-installing *all* moogento modules!

"I see empty tables in the plugin config page"

If you've been updating the module, something might have gone sideways - try restarting the install.

Just log in to your database (eg. using phpMyAdmin) and find the setup_module table. Search for the line related to the plugin (eg. LIKE %stockeasy%) and delete it, then run the M2 database upgrade:

php bin/magento setup:upgrade

"I get this error: 'Exception Printing is Disabled by Default for Security Reasons'"

This means that you're set to hide errors; this is recommended for production sites, but for developing a site it's helpful to see errors.

In app/bootstrap/index.php and /index.php set this (uncommented) at the top of the file:

ini_set('display_errors', 1);

"The Moogento license & config sections go blank & I get this error: '(Zend_Http_Exception): Invalid header line detected : Zend_Http_Response::extractHeaders'"

This is a bug in older Magento versions which had issues with http2 responses. Here's the fix (once you're updated to M2.3.3+ you can remove the fix):


1. In /composer.json, add:

composer.json "autoload": { ... "files": [ ... "lib/Zend/Http/Response.php" ] }

It'll then look something like this:

magento-composer.png


2. Copy

vendor/magento/zendframework1/library/Zend/Http/Response.php

to

lib/Zend/Http/Response.php


3. In that file, edit these lines:

[Line 185]

if (! preg_match('#^\d|\d(\.\d)*$#', $version)) {

[line 517]

if ($index === 0 && preg_match('#^HTTP/\d(?:\.\d+)* [1-5]\d+#', $line)) {


4. Run composer dump-autoload

pickPack (M2):

"After install I get a 'Unknown module(s): 'Moogento_PickPack' error"

If you've just ran:

php bin/magento module:enable Moogento_PickPack

and get that error message, then there's a few things to check:

  1. Have you uploaded pickPack files to the repo? :)
  2. Have you gone through our Install Guide?


"The admin user is logged out when trying to print PDFs."

This is a Magento issue, related to Github magento2: Issue #5309

Other users have suggested editing the .htaccess or conf file to something like this:

php_value session.cookie_lifetime 86400

php_value session.gc_maxlifetime 86400

and then setting the Admin Session timeout to 86400 in the admin config..


"After install I see missing images or strange formatting in the PDF editor"

Clear static files as above.


"I see text links instead of nice images!"

Have you recently cleared /pub/static ?

You're likely missing the /pub/static/.htaccess file. Just copy that back in (from another install if necessary).

missing-images-magento-2.png

"When compiling a plugin, I get: 'Class 'PHPUnit\Framework\TestCase' not found in ... mPDFTest.php'."

See this issue explained & resolved for one case here.

tldr;

Are you running Magento < 2.2 ?

Yes! Get in touch, you're a special case :)

No? Read on!

• You need PHPUnit version at least 6.x

• Install that via composer

Installing PHPunit

Try running composer install and/or removing /vendor folder.

If you decide to remove that folder then you might use this command, inside your Magento root folder:

rm -rf vendor/*

And then get composer to reinstall those modules:

composer update

php bin/magento setup:upgrade

Recompile:

php bin/magento setup:di:compile

If you still have issues, check that your version is correct:

composer show -- phpunit/phpunit

If that's still showing a version less than 6.5, try going into the Moogento_Core and running update:

cd app/code/Moogento/Core

composer update

Also check, if you're running different PHP versions (eg. on local maybe using MAMP and a central PHP version) that you can access phpunit:

phpunit --version

^ If this returns an error then probably the easiest thing to do is install phpUnit:

wget https://phar.phpunit.de/phpunit-6.5.phar

chmod +x phpunit-6.5.phar

sudo mv phpunit-6.5.phar /usr/local/bin/phpunit

And then check again:

phpunit --version

If you're running Magento locally, using something like MAMP:

1. Copy phpunit into /MAMP/bin/

2. Edit the bash profile:

nano ~/.bash_profile

then add this after other PATH lines: export PATH=/Applications/MAMP/bin/php/php7.1.12/bin:$PATH


"The printed date doesn't match the date showing in the Orders page"

pickPack allows you to choose which date you want to print:

  • Printed date
  • Ordered date
  • Invoiced date
  • Credited date
  • Shipment date

Just:

  1. Edit the page you're after
  2. Click the 'Free text' block that you want to add a date to
  3. Place the cursor in the text field for that block, where you want to add the date
  4. Click the type of date you want to add
  5. Save
setting-pdf-date-magento2.png
  • Note you can set the way the date is formatted (eg. '1/2/19', '1st Feb 2019', etc) in the pickPack General config.


"I'm using Magento 2.2.7 and having email-related errors"

"I get this error: 'Class Zend\Mime\PartFactory does not exist in [Moogento\PickPack\Mail\Template\TransportBuilder\Interceptor]'"

If you're running a version of Magento less than 2.2.8, there's a quick command you need to run.

  1. Run this command in your main Magento install folder:
    composer require zendframework/zend-mime
  2. Follow with the usual Magento update commands.

"I get this error: 'Warning: file_put_contents(/var/tmp/moogento/pickpack/pdf.html): failed to open stream: No such file or directory'"

You've got some permission or ownership issue with your setup (pickPack can't write its temp files while creating the PDFs).

It's time to check Magento 2 file ownership & permissions.

"I get this error: 'Fatal error: Interface 'Magento\Framework\Filter\SimpleDirective\ProcessorInterface' not found'"

Please upgrade to Magento 2.3.4+

If you need to run <2.3.4 feel free to get in touch and we can get it working for you.


shipEasy (M2):

"When installing, after running compile on production, I get an error 'The directory /var/generation cannot be deleted'"

Re-generate static content:

php bin/magento setup:static-content:deploy

If your store isn't in English try this, in this order (eg. here for a French store):
php bin/magento setup:static-content:deploy en_US fr_FR


"After install I see a spinning wheel in the Orders page which doesn't go away"

Your install may not have completed correctly.

"When triggering emails (eg. via Ship & Invoice), we have issues."

If you're running 2.3.4+, it's stricter when processing templates - check that you don't have incomplete IF clauses in templates.

  1. Try re-running the installation compile commands.
  2. Check that your file & folder permissions are correct:
    1. The Magento file system user should have full control (read/write/execute) of all files and directories
    2. That user must not be the same user as the web server user
    3. The web server user must have write access to these files and folders:
      /var app/etc
      /pub
      /generated (since 2.2.1)
    4. The web server user group must own the Magento file system so the Magento user (who's in that group) can share file access with the web server user.
      (Including files created by the Magento Admin or other web-based utilities)
    cd {root Magento folder}
    find . -type f -exec chmod 644 {} \;
    find . -type d -exec chmod 755 {} \;
    find ./var -type d -exec chmod 777 {} \;
    find ./pub/media -type d -exec chmod 777 {} \;
    find ./pub/static -type d -exec chmod 777 {} \;
    chmod 777 ./app/etc
    chmod 644 ./app/etc/*.xml
    chown -R :{web server group} .
    chmod u+x bin/magento
Then clear the caches:
php bin/magento cache:clean && php bin/magento cache:flush && php bin/magento cache:enable


"When editing a shipping address from the orders page (by clicking the pencil icon) I get an error."

If you've recently updated, please check you've still got the custom address parts selected in the shipEasy config.


"When loading the Orders page, I see a 'server error', but only with a specific user"

Try clearing the `ui_bookmark` table.

You can (backup first) truncate that table (this will clear all table prefs for all users), or for the specific `user_id` with issues.


"I still have issues"

Check you're using a supported version of PHP & Magento

  1. Check which version of PHP your version of Magento supports
    If you're not running a supported version, pause the install and consider changing your installed PHP version
  2. Open up {plugin}/composer.json and check the PHP & Magento versions that are supported match what you're running

Check log files

Your Magento 2 debug log file should be located here:

var/log/debug.log

If you haven't turned on logging do so now.

Enabling debug logging

Via Admin backend

Stores -> ConfigAdvanced -> Developer Debug -> "Log to File"

Via CLI

php bin/magento config:set dev/debug/debug_logging 1 && php bin/magento cache:flush
If you get a --lock error then try this:
php bin/magento config:set --lock dev/debug/debug_logging 1 && php bin/magento cache:flush

Disabling debug logging

php bin/magento config:set dev/debug/debug_logging 0 && php bin/magento cache:flush
    • Try running Magento and then check those log files - the default location is /var/log
    • Add a number to the log filenames to see recent messages only.
  1. Next, check your server log files for errors (location will depend on your server - look for php and server log files).


Check file ownership permissions

If you didn't get this done when setting up Magento, or installed the plugin under a server user that's not the one that owns the Magento files, you might need to check this.

Check Magento 2 File Ownership and Permissions


Disabling extensions

Still problems? Let's turn it off:

  1. Disable the extension :
    php bin/magento module:disable Moogento_PickPack --clear-static-content
  2. Disable other Moogento code if you like:
    php bin/magento module:disable Moogento_License --clear-static-content
    php bin/magento module:disable Moogento_Core --clear-static-content
    ^ Don't do this step if you want to leave other Moogento plugins running!
    *Or*, disable all in one line:
    php bin/magento module:disable Moogento_Core Moogento_License Moogento_Shipeasy
  3. Recompile:
    php bin/magento setup:di:compile
    Update the db:
    php bin/magento setup:upgrade
  4. Clear caches:
    php bin/magento cache:clean && php bin/magento cache:flush

Removing extensions

Need to remove all files related to our plugins?

Don't forget to drop us a line if something is going wrong, as we can usually help :)

Via CLI:

  1. Disable the plugins first, as per above
  2. Navigate to the Moogento parent folder:
    cd /app/code/Moogento/
  3. Check what's there:
    ls
  4. Remove the plugin folder:
    rm -rf {extension name: eg. PickPack}
  5. Clear cache and indexes and log out/in

Via FTP:

  1. Disable the plugins first, as per above
  2. Download the latest version you have access to from your account
  3. Compare those files and folder structure with what you have installed
  4. Remove those files, starting with /app/code/Moogento/{plugin name}
  5. Clear cache and indexes and log out/in

Then in your DB:

  1. Find the `setup_module` in your db
  2. Find the entry for the Moogento module(s) you want to remove
  3. Delete those entries
  4. Find the `core_config_data` in your db
  5. Search path for '%LIKE% moogento'
  6. Select the relevant entries and delete
    ^ this will delete your saved config settings for the module(s)

"How long will it take to investigate and fix my issue?"

If you've got in touch with a issue or custom work request, we'll get back to you with a rough ETA.

We do all work in the order that they come in, with some sorting based on the Maintenance Plan you're on.

We can't begin the work (or the ETA timer) until we have correct access details, so please make sure you send correct ones.

"Why is my issue resolution ETA not Right Now???!!!"

Estimates for development work are necessarily vague, it may be faster or slower than the ETA we send you.

It takes time to properly investigate bug reports, and plan feature requests, and we're a small team - we go as fast as we can but please don't expect magical instant development work :)

Also worth bearing in mind that we respond to support requests ourselves, so if you email every day for an update then you'll be directly slowing down your issue resolution.

"I found some encrypted portions of code, have I been hacked?"

All our code is open for you to edit.

We do have a couple of small blocks of encrypted code which are part of our licensing system. These need to be left unedited for your extension to work.

If you're worried that you've been hacked and have some unauthorised code, the easiest way to check these specific files is to compare that code with the same file from the extension zip, downloaded from your Moogento account. Note that this code will sometimes change between versions, so make sure you're comparing the same version.

"I stilll have issues!"

  1. your (S)FTP & SSH access details
  2. Magento admin access
  3. which version of Magento
  4. which PHP version
  5. which Moogento plugin & version
Before getting in touch, please:
  • turn on Magento logging,
  • turn off Magento compilation,
  • provide details of any opcode or db cache systems and their logins,
  • provide the path to your server log files
  • include your order id or license key

"How do I give you Magento access?"

Tried all the suggestions above and need us to take a look? Not sure how to do that?

  1. Log into your Magento site
  2. Copy the URL from the browser and add it to your email to us.
  3. Next go to SystemPermissionsUsers > Add New User
  4. Make a username and password and add that to the email to us.
  5. then click User Role in the left column and assign us the role of Administrator.

Done!

"Where do I find the license key?"

We need your order id or license key before we can help with support. Because, you know. :)

  1. Go to SystemConfigurationMoogento -> (the extension you want help with, eg. pickPack)
  2. Click the 'License' section at the top of the page to expand it.
  3. Copy the value from the 'License Key' field.
  4. Paste that in your email that to us.

magento-license-key-finding-copying.png