Magento 2 has NULL value for customer_id in the quotes table, even after the customer is logged in. Causing error “cartId is a required field” Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar ManaraTransactional emails are sent to my client after placing an order, but not to the customers. Why?Quote with no items - add to cart errorGetting strange result querying carts when using multiple search filter groupsAdd validated list of patients to customer account during checkoutMagento 2: Customer is_active field not working?Magento 2: Customer related notifications do not disappear even after refreshing the pageMagento 2: Logged-in customer can't place order with new shipping methodMagento 2.1.7 Upgrade to 2.2.x - Error converting field `value` in table `dgtl_quote_item_option`Error: The configuration parameter “formElement” is a required for “costum_attribute” fieldCron deleting expired quotes
Check if a string is entirely made of the same substring
How to open locks without disable device?
Co-worker works way more than he should
What was Apollo 13's "Little Jolt" after MECO?
How long after the last departure shall the airport stay open for an emergency return?
Align column where each cell has two decimals with siunitx
Is accepting an invalid credit card number a security issue?
What's parked in Mil Moscow helicopter plant?
Why did C use the -> operator instead of reusing the . operator?
Do I need to protect SFP ports and optics from dust/contaminants? If so, how?
What's the difference between using dependency injection with a container and using a service locator?
Putting Ant-Man on house arrest
How to keep bees out of canned beverages?
With indentation set to `0em`, when using a line break, there is still an indentation of a size of a space
A strange hotel
Additive group of local rings
How would I use different systems of magic when they are capable of the same effects?
Map material from china not allowed to leave the country
Error: Syntax error. Missing ')' for CASE Statement
Has a Nobel Peace laureate ever been accused of war crimes?
Does the set of sets which are elements of every set exist?
Israeli soda type drink
"My boss was furious with me and I have been fired" vs. "My boss was furious with me and I was fired"
Would reducing the reference voltage of an ADC have any effect on accuracy?
Magento 2 has NULL value for customer_id in the quotes table, even after the customer is logged in. Causing error “cartId is a required field”
Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar ManaraTransactional emails are sent to my client after placing an order, but not to the customers. Why?Quote with no items - add to cart errorGetting strange result querying carts when using multiple search filter groupsAdd validated list of patients to customer account during checkoutMagento 2: Customer is_active field not working?Magento 2: Customer related notifications do not disappear even after refreshing the pageMagento 2: Logged-in customer can't place order with new shipping methodMagento 2.1.7 Upgrade to 2.2.x - Error converting field `value` in table `dgtl_quote_item_option`Error: The configuration parameter “formElement” is a required for “costum_attribute” fieldCron deleting expired quotes
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
In a Magento 2 store, the checkout breaks when the user successfully logs in. When the user logs in and enters their address info, they receive no shipping quotes, and an error pops up saying "cartId is a required field".
The error is actually misleading: The underlying problem (discovered using xdebug) is that the quote
table row for their cart is missing a customer_id
. Instead, it has a NULL
value for this field.
This means that:
- Magento calls this function
MagentoQuoteModelResourceModelQuote::loadByCustomerId($quote, $customerId)
* For the purpose of this example,
$customerId = 1;
- Which runs a query:
SELECT `quote`.*
FROM `quote`
WHERE ( `quote`.`customer_id` = 1 )
AND ( store_id IN ( '1' ) )
AND ( is_active = 1 )
ORDER BY `updated_at` DESC
LIMIT 1 - Of course, nothing is found, so an exception is thrown. The actual error is masked by a catch-all that does nothing -- the same one described in GitHub Issue #9744
} catch (NoSuchEntityException $e)
/* do nothing and just return null */
So my question is: Why would the quote
not have a customer_id
for the quote that the customer had created when adding products to the cart? The products still show up in the right sidebar, so the quote is still attached to their session, but for whatever reason, it lacks their customer_id
after they log in.
magento2 checkout quote
bumped to the homepage by Community♦ 5 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
In a Magento 2 store, the checkout breaks when the user successfully logs in. When the user logs in and enters their address info, they receive no shipping quotes, and an error pops up saying "cartId is a required field".
The error is actually misleading: The underlying problem (discovered using xdebug) is that the quote
table row for their cart is missing a customer_id
. Instead, it has a NULL
value for this field.
This means that:
- Magento calls this function
MagentoQuoteModelResourceModelQuote::loadByCustomerId($quote, $customerId)
* For the purpose of this example,
$customerId = 1;
- Which runs a query:
SELECT `quote`.*
FROM `quote`
WHERE ( `quote`.`customer_id` = 1 )
AND ( store_id IN ( '1' ) )
AND ( is_active = 1 )
ORDER BY `updated_at` DESC
LIMIT 1 - Of course, nothing is found, so an exception is thrown. The actual error is masked by a catch-all that does nothing -- the same one described in GitHub Issue #9744
} catch (NoSuchEntityException $e)
/* do nothing and just return null */
So my question is: Why would the quote
not have a customer_id
for the quote that the customer had created when adding products to the cart? The products still show up in the right sidebar, so the quote is still attached to their session, but for whatever reason, it lacks their customer_id
after they log in.
magento2 checkout quote
bumped to the homepage by Community♦ 5 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
In a Magento 2 store, the checkout breaks when the user successfully logs in. When the user logs in and enters their address info, they receive no shipping quotes, and an error pops up saying "cartId is a required field".
The error is actually misleading: The underlying problem (discovered using xdebug) is that the quote
table row for their cart is missing a customer_id
. Instead, it has a NULL
value for this field.
This means that:
- Magento calls this function
MagentoQuoteModelResourceModelQuote::loadByCustomerId($quote, $customerId)
* For the purpose of this example,
$customerId = 1;
- Which runs a query:
SELECT `quote`.*
FROM `quote`
WHERE ( `quote`.`customer_id` = 1 )
AND ( store_id IN ( '1' ) )
AND ( is_active = 1 )
ORDER BY `updated_at` DESC
LIMIT 1 - Of course, nothing is found, so an exception is thrown. The actual error is masked by a catch-all that does nothing -- the same one described in GitHub Issue #9744
} catch (NoSuchEntityException $e)
/* do nothing and just return null */
So my question is: Why would the quote
not have a customer_id
for the quote that the customer had created when adding products to the cart? The products still show up in the right sidebar, so the quote is still attached to their session, but for whatever reason, it lacks their customer_id
after they log in.
magento2 checkout quote
In a Magento 2 store, the checkout breaks when the user successfully logs in. When the user logs in and enters their address info, they receive no shipping quotes, and an error pops up saying "cartId is a required field".
The error is actually misleading: The underlying problem (discovered using xdebug) is that the quote
table row for their cart is missing a customer_id
. Instead, it has a NULL
value for this field.
This means that:
- Magento calls this function
MagentoQuoteModelResourceModelQuote::loadByCustomerId($quote, $customerId)
* For the purpose of this example,
$customerId = 1;
- Which runs a query:
SELECT `quote`.*
FROM `quote`
WHERE ( `quote`.`customer_id` = 1 )
AND ( store_id IN ( '1' ) )
AND ( is_active = 1 )
ORDER BY `updated_at` DESC
LIMIT 1 - Of course, nothing is found, so an exception is thrown. The actual error is masked by a catch-all that does nothing -- the same one described in GitHub Issue #9744
} catch (NoSuchEntityException $e)
/* do nothing and just return null */
So my question is: Why would the quote
not have a customer_id
for the quote that the customer had created when adding products to the cart? The products still show up in the right sidebar, so the quote is still attached to their session, but for whatever reason, it lacks their customer_id
after they log in.
magento2 checkout quote
magento2 checkout quote
edited Dec 19 '17 at 19:00
Eric Seastrand
asked Dec 19 '17 at 18:45
Eric SeastrandEric Seastrand
641717
641717
bumped to the homepage by Community♦ 5 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 5 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
This issue stemmed from an exception being thrown (and masked) deep down in the quote address validation code. When the customer logs in, the quote must be re-saved to set their customer_id
, and before saving, it must be validated. If the validation doesn't pass, the quote isn't saved, and so the customer_id
field never gets populated, leading to the error mentioned in the question.
This exception was being thrown because there was an include path (/usr/share/php
) being added by the php/apache configuration, but due to open_basedir
restrictions, it wasn't accessible. As a result, when the auto-loader tried to find the MagentoFrameworkValidatorEmailAddress.php
class there, it encountered a warning (shown below).
Warning: is_readable(): open_basedir restriction in effect. File(/usr/share/php/Zend/Validate/MagentoFrameworkValidatorEmailAddress.php) is not within the allowed path(s) : [my paths] in /mnt/www/magento2-documentroot/vendor/magento/zendframework1/library/Zend/Loader.php on line 186' (length=466)
It's still not immediately evident to me why this warning caused an exception to be thrown, but the fix ended up being extremely simple: Just add this line to .htaccess
to reset the include path, and prevent the auto-loader from looking in places it has no business looking in:
php_value include_path "."
From what I can tell, Magento 2 is self-contained, and adds its own relevant paths to the include path, so there shouldn't be any need for other include paths. If this is incorrect (or changes at a later date), please let me know in the comments.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "479"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f206439%2fmagento-2-has-null-value-for-customer-id-in-the-quotes-table-even-after-the-cus%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This issue stemmed from an exception being thrown (and masked) deep down in the quote address validation code. When the customer logs in, the quote must be re-saved to set their customer_id
, and before saving, it must be validated. If the validation doesn't pass, the quote isn't saved, and so the customer_id
field never gets populated, leading to the error mentioned in the question.
This exception was being thrown because there was an include path (/usr/share/php
) being added by the php/apache configuration, but due to open_basedir
restrictions, it wasn't accessible. As a result, when the auto-loader tried to find the MagentoFrameworkValidatorEmailAddress.php
class there, it encountered a warning (shown below).
Warning: is_readable(): open_basedir restriction in effect. File(/usr/share/php/Zend/Validate/MagentoFrameworkValidatorEmailAddress.php) is not within the allowed path(s) : [my paths] in /mnt/www/magento2-documentroot/vendor/magento/zendframework1/library/Zend/Loader.php on line 186' (length=466)
It's still not immediately evident to me why this warning caused an exception to be thrown, but the fix ended up being extremely simple: Just add this line to .htaccess
to reset the include path, and prevent the auto-loader from looking in places it has no business looking in:
php_value include_path "."
From what I can tell, Magento 2 is self-contained, and adds its own relevant paths to the include path, so there shouldn't be any need for other include paths. If this is incorrect (or changes at a later date), please let me know in the comments.
add a comment |
This issue stemmed from an exception being thrown (and masked) deep down in the quote address validation code. When the customer logs in, the quote must be re-saved to set their customer_id
, and before saving, it must be validated. If the validation doesn't pass, the quote isn't saved, and so the customer_id
field never gets populated, leading to the error mentioned in the question.
This exception was being thrown because there was an include path (/usr/share/php
) being added by the php/apache configuration, but due to open_basedir
restrictions, it wasn't accessible. As a result, when the auto-loader tried to find the MagentoFrameworkValidatorEmailAddress.php
class there, it encountered a warning (shown below).
Warning: is_readable(): open_basedir restriction in effect. File(/usr/share/php/Zend/Validate/MagentoFrameworkValidatorEmailAddress.php) is not within the allowed path(s) : [my paths] in /mnt/www/magento2-documentroot/vendor/magento/zendframework1/library/Zend/Loader.php on line 186' (length=466)
It's still not immediately evident to me why this warning caused an exception to be thrown, but the fix ended up being extremely simple: Just add this line to .htaccess
to reset the include path, and prevent the auto-loader from looking in places it has no business looking in:
php_value include_path "."
From what I can tell, Magento 2 is self-contained, and adds its own relevant paths to the include path, so there shouldn't be any need for other include paths. If this is incorrect (or changes at a later date), please let me know in the comments.
add a comment |
This issue stemmed from an exception being thrown (and masked) deep down in the quote address validation code. When the customer logs in, the quote must be re-saved to set their customer_id
, and before saving, it must be validated. If the validation doesn't pass, the quote isn't saved, and so the customer_id
field never gets populated, leading to the error mentioned in the question.
This exception was being thrown because there was an include path (/usr/share/php
) being added by the php/apache configuration, but due to open_basedir
restrictions, it wasn't accessible. As a result, when the auto-loader tried to find the MagentoFrameworkValidatorEmailAddress.php
class there, it encountered a warning (shown below).
Warning: is_readable(): open_basedir restriction in effect. File(/usr/share/php/Zend/Validate/MagentoFrameworkValidatorEmailAddress.php) is not within the allowed path(s) : [my paths] in /mnt/www/magento2-documentroot/vendor/magento/zendframework1/library/Zend/Loader.php on line 186' (length=466)
It's still not immediately evident to me why this warning caused an exception to be thrown, but the fix ended up being extremely simple: Just add this line to .htaccess
to reset the include path, and prevent the auto-loader from looking in places it has no business looking in:
php_value include_path "."
From what I can tell, Magento 2 is self-contained, and adds its own relevant paths to the include path, so there shouldn't be any need for other include paths. If this is incorrect (or changes at a later date), please let me know in the comments.
This issue stemmed from an exception being thrown (and masked) deep down in the quote address validation code. When the customer logs in, the quote must be re-saved to set their customer_id
, and before saving, it must be validated. If the validation doesn't pass, the quote isn't saved, and so the customer_id
field never gets populated, leading to the error mentioned in the question.
This exception was being thrown because there was an include path (/usr/share/php
) being added by the php/apache configuration, but due to open_basedir
restrictions, it wasn't accessible. As a result, when the auto-loader tried to find the MagentoFrameworkValidatorEmailAddress.php
class there, it encountered a warning (shown below).
Warning: is_readable(): open_basedir restriction in effect. File(/usr/share/php/Zend/Validate/MagentoFrameworkValidatorEmailAddress.php) is not within the allowed path(s) : [my paths] in /mnt/www/magento2-documentroot/vendor/magento/zendframework1/library/Zend/Loader.php on line 186' (length=466)
It's still not immediately evident to me why this warning caused an exception to be thrown, but the fix ended up being extremely simple: Just add this line to .htaccess
to reset the include path, and prevent the auto-loader from looking in places it has no business looking in:
php_value include_path "."
From what I can tell, Magento 2 is self-contained, and adds its own relevant paths to the include path, so there shouldn't be any need for other include paths. If this is incorrect (or changes at a later date), please let me know in the comments.
answered Dec 21 '17 at 14:06
Eric SeastrandEric Seastrand
641717
641717
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f206439%2fmagento-2-has-null-value-for-customer-id-in-the-quotes-table-even-after-the-cus%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown