magento / magento2

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.
http://www.magento.com
Open Software License 3.0
11.52k stars 9.31k forks source link

Problem reading session file #3572

Closed sengaigibon closed 8 years ago

sengaigibon commented 8 years ago

I'm getting a weird behavior using Magento 2.0.2, it's described here as steps:

  1. On 'Sign in' front page, as customer if I type a wrong username/password I get redirected to the same page (normal) but Magento doesn't display any error message (abnormal), I was expecting "Invalid login or password" from LoginPost.php . Taking a look to the proper session file in var/session/sess_###, the error is stored there...
  2. I login again with the correct password and get redirected to my dashboard (normal) but the customer's name doesn't appear in the top menu bar, as a part of the welcome message (abnormal). Also, if the customer had in his car items from a previuos session, the orange square to the right of the cart icon doesn't show any amount.
  3. Then, if I add any item to the cart I get the message 'You added xxx to your shopping cart' (normal) but not only this but also I get the previous 'Invalid login' message (abnormal).
  4. After this, if I click on the cart icon and 'Go to Checkout' button, I get the login popup (abnormal) instead of going to the onepage checkout (normal).
  5. Finally, if at this point I go back to 'My Account', I get the proper customer name in the top bar, with the proper amount of items in the cart and I can go to checkout as if nothing had happened.

I'm working on customize Magento for specific needs, I added a field to customer_entity table, 'mobile' field which has the same attributes as 'email' field. I disabled email as requiered field in the database. I added three custom fields stored in customer_entity_varchar. I had preferences of many files of Magento/Customer module. Even if I disable all my modules, rollback all my commits, clearing cache, var/generation, var/session and puc/static/frontend/*, I'm still getting this behavior. I have two instances, one running in production mode and one as developer, both has the same behavior. I'm using Opera, Firefox and Chrome for the tests, clearing the browser history and cache makes no difference.

Also, I get this messages in the system.log file:

[2016-02-29 07:05:45] main.INFO: Cache file with merged layout: LAYOUT_frontend_STORE1_2c7461af04bb11fe209659d7147d2c579: Please correct the XML data and try again. [] [] [2016-02-29 07:05:45] main.INFO: Cache file with merged layout: LAYOUT_frontend_STORE1_20a98983867a1770682b48d9a0ad63441: Please correct the XML data and try again. [] [] [2016-02-29 07:05:45] main.CRITICAL: Broken reference: the 'catalog.compare.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] [] [2016-02-29 07:05:45] main.CRITICAL: Broken reference: the 'sale.reorder.sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] [] [2016-02-29 07:05:45] main.CRITICAL: Broken reference: the 'wishlist_sidebar' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] [] [2016-02-29 07:05:45] main.CRITICAL: Broken reference: the 'paypal.partner.right.logo' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] [] [2016-02-29 07:05:45] main.CRITICAL: Broken reference: the 'bml.right.logo' element cannot be added as child to 'sidebar.additional', because the latter doesn't exist [] [] [2016-02-29 07:05:45] main.CRITICAL: Broken reference: the 'store.settings.currency' tries to reorder itself towards 'store_language', but their parents are different: 'store.settings' and 'header.panel' respectively. [] [] [2016-02-29 07:05:45] main.INFO: Cache file with merged layout: LAYOUT_frontend_STORE1_26f1b068ec7ccf4878f9284dd1137afd1: Please correct the XML data and try again. [] []

Sometimes, for an unknown reason the error disappear and the users can login and go to checkout normally. But this error is getting more persistent since 5 days ago.

Any advice to fix it? Thank you so much!

EDIT: I must add something I read from a different issue: I also see the red/orange square next to the cart icon but empty, before and after login, only shows an amount after add something to the cart and adds this new item to those added in previous sessions.

UPDATE:

After step (5) take place, every access to magento site (e.g. in the browser, if I close the tab and reopen it from index.php or any other section of the store) is rendering correctly the customer name on top bar and items in the cart.

pantaoran commented 8 years ago

I also see this behavior, and it's really worrying me because as long as this persists I cannot possibly put any site live!

devhn commented 8 years ago

Same issues here and only after upgrading from 2.0.0. to 2.0.2.

sevos1984 commented 8 years ago

@bb8d clearing cookies should be performed after upgrading. @sengaigibon there are two internal tickets that should solve your problem and will be delivered soon (MAGETWO-46014 and MAGETWO-49449)

devhn commented 8 years ago

@sevos1984 cookies and local storage was cleaned.

sengaigibon commented 8 years ago

Now I noticed two more issues, one is kind of the opposite of this one: I'm adding custom fields to the address, then in the checkout step 1, after I update the page pressing F5 suddenly I see a page telling me I have no items in my cart, customer name in the top menu bar, item amount in the orange square. If I click into My Account I get redirected to Sign in page... Should I open a new issue describing all the details? The other thing I saw is after update the page in checkout step 1, the country in my already stored addresses disappear, and reappear after I cleaned var/session/*, browser cookies and log in again.

sengaigibon commented 8 years ago

@sevos1984 Great! Thanks! :+1:

sevos1984 commented 8 years ago

@sengaigibon Check that your system permissions set correctly http://devdocs.magento.com/guides/v2.0/install-gde/prereq/file-system-perms.html, also try clearing everything in var folder.

sengaigibon commented 8 years ago

I found that if I clean var/session* but don't clean browser cookies is when I get the behavior of the last comment with the customer name in the bar but logged out.

pantaoran commented 8 years ago

@sevos1984 what is the status on those MAGETWO-46014 and MAGETWO-49449? Also, will this lead to a new release or will I need to use the dev branch to get it fixed? Or maybe I should direct this question to @slavvka since it was assigned to him?

pantaoran commented 8 years ago

Another week has gone by, so I'm going to ask again: Is this fixed now @sevos1984 and @slavvka ? On the develop branch I see some commits regarding MAGETWO-49449, but MAGETWO-46014 is never mentioned so far.

We'd really like to show Magento2 in client meetings, but as long as a simple customer login doesn't work properly we just can't do that.

sengaigibon commented 8 years ago

@bb8d can you share with us some details about your installation environment? such as operating system, running a virtual machine or containers? any special software running on your Magento instance? Thanks!

devhn commented 8 years ago

Sure:

OS: Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux (debian 8.2 - jessie) MYSQL: Ver 14.14 Distrib 5.7.10, for Linux (x86_64) using EditLine wrapper PHP 5.6.14-0+deb8u1 (fpm) with with Zend OPcache v7.0.6-dev WEBSERVER: nginx/1.8.0 built by gcc 4.9.2 (Debian 4.9.2-10) built with OpenSSL 1.0.1k 8 Jan 2015 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_spdy_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6

sevos1984 commented 8 years ago

MAGETWO-46014 is regarding delayed messages and will be delivered later, @pantaoran @bb8d I can't recreate your problem, looks like some issues with your environment

pantaoran commented 8 years ago

@sevos1984 what does that mean "MAGETWO-46014 will be delivered later"? How much later?

Regarding environment, I'm running this in Docker containers, so there isn't necessarily a single one OS, but all the official containers run debian 8 (jessie).

nginx: https://hub.docker.com/_/nginx/ (I'm using the nginx:1.9 image, version output says nginx/1.9.10) php-fpm: https://hub.docker.com/_/php/ (I'm using the php:7.0-fpm image but I also tried php:5.6-fpm, version output says PHP 5.6.17) mysql: https://hub.docker.com/_/mariadb/ (I'm using the mariadb:10.0 image, version output says Ver 15.1 Distrib 10.0.23-MariaDB)

edit: added full php config details

sevos1984 commented 8 years ago

@pantaoran later after release. I have nginx1.8.1 and php7.0.6-dev. I see you don't have bcmath extension that is required.

moe-kayali commented 8 years ago

The same weird behaviour as @sengaigibon mentioned, here on Magento 2.0.4. How Reproducible: Always.

pantaoran commented 8 years ago

@sevos1984 thanks for this info. According to the official documentation, bcmath is only required for the enterprise edition, and I'm using the CE and the readiness check at installation said that I had everything I needed.

@sengaigibon , @devhn , @moe-kayali , I was able to get this to work now and want to share my observations. It appears to have something to do with the used OS.

I previously noticed that the problem didn't appear on my Ubuntu-based development machine, but on my Debian server it failed as described. This is despite the fact that I'm running it all in docker containers, which should abstract away the host OS for all I know, but that doesn't seem to be happening. All my containers were using the official images as detailed in my last comment, and those are all Debian-based. So Debian containers on Ubuntu host worked, but Debian containers on Debian host didn't work.

I now created my own php and nginx containers to replace the official ones, and mine are based on Ubuntu. Lo and behold, this now works. Ubuntu containers work on Ubuntu host and on Debian host, the problem is gone.

All this is of course way too little data to be sure that this is the real reason, but my problem seems solved for now so I won't invest any more time. I guess the Magento team wasn't kidding when they state that Ubuntu is the supported OS.

pantaoran commented 8 years ago

I'm back again to report more problems.

The issue doesn't happen on my desktop anymore, but now I started testing mobile clients and here it's still the same behavior as described above, after logging in I see the "My Account" page but without my name in the menu, and when I try to checkout it says I'm not logged in.

It happens consistently on my android phone in firefox and chrome, and also on an iphone's safari. On desktop it never happens, regardless if I enable "device mode" to simulate mobile clients or not.

The mystery continues, guess my previous theory isn't that credible anymore :-(

OgreMHDW commented 8 years ago

I believe I am having the same issue on 2 different sites as well.

dimple-vasoya commented 8 years ago

I am getting session issues on staging server. Like not getting current page, customer data etc from the session object. The same thing is working perfect on local. I debugged a lot but no luck. Please help!

dimple-vasoya commented 8 years ago

The issue was because of full page cache. After disabling, session is working fine.

carmelomtb commented 8 years ago

I can reproduce the bug, if is it useful I can post the code.

OgreMHDW commented 8 years ago

I have full page cache turned off and still having the issue. I even rebuilt the site thinking the composer install was the issue, it is the same with a downloaded zip install.

josegreyes commented 8 years ago

Any update on this issue, I am on an Ubuntu 14.04 and am having the same issue. Cart won't update selected and even though guest checkout is enabled I get a popup to sign or register to checkout. I believe it has something to do with the sessions but have exhausted all avenues there.

carmelomtb commented 8 years ago

In my case i solve the problem activating Varnish Caching. Go to Stores -> Configuration -> System -> Full Page Cache, select Varnish Caching, and follow the instructions for configure/install Varnish.

josegreyes commented 8 years ago

I installed varnish and am still having the issue. Could it be possibly be related to this problem http://alanstorm.com/magento_sessions_early is there any way to check to see if the sessions are being set correctly?

sengaigibon commented 8 years ago

@josegreyes If you look into %magento root folder%/var/sessions you'll find the files used to store the data for specific sessions. Delete everything there, open Magento, login, and if you look into the session file recently created, and your customer already had items in his cart, the file will show it with all the relevant info related to him. Also, in the web browser see that on every Magento page request there is a form_key attached to it, and you can check that is the same stored in the session file... Btw, interesting what Alan Storm said, but was for a different Magento version

josegreyes commented 8 years ago

@sengaigibon hi there, i did what you said and i saw the session file created, but the form key does not match what is on the site. Also, each time I go to a different page, a new session file is created, I am thinking that is probably not right either. Thanks for your help!

sengaigibon commented 8 years ago

@josegreyes For me, when I wrote last comment I had sess_87xxx file, and now I updated the page and navigate here and there, that file doesn't exist anymore, now is sess_aaxxx but with the same form_key, also for each time I navigate between pages, but I'm not using Varnish Caching, actually I have all cache disabled. But only one session file... Not sure what's happening :-/

slavvka commented 8 years ago

Hi @sengaigibon, the fix for MAGETWO-46014 has been delivered to mainline. See commits 541ec80, 55a6e51, b4d3739, eec31f6, af2a832, d97ebe5, 3120b1e and 66e6ad6. If this issue is still reproducible please reopen it

sunilit42 commented 8 years ago

hey,

any solution for that? I have same problem

carmelomtb commented 8 years ago

This issue is still reproducible in magento 2.1.0-rc1, 2.0.7, 2.0.6, and lower versions. You can reproduce the bug in the following way:

1) Install a magento 2.1.0-rc1 or a lower version

2) Change deploy mode to developer: php bin/magento deploy:mode:set developer

3) Download and install this module: Test.zip

4) Make sure all cache types are enabled

5) Go to home page, under the LUMA logo you can see "Session status: " The ReadSession.php Block will execute the following code: $session=$this->_session; $session->start(); return $session->getMessage(); The template read-session.phtml will execute: Session status: <?php echo $block->readSession();

6) Go to page "setsession/save", if your magento installation folder is magento21 follow this link http://localhost/magento21/setsession/save The module will execute the following code: $session=$this->_objectManager->get('\Magento\Framework\Session\SessionManagerInterface'); $session->start(); $session->setMessage('The session works'); You can see under the LUMA Logo: "Session status: The session works"

7) Go to home page, under the LUMA logo you can see (the bug ): "Session status: " When the session works you can see: "Session status: The session works"

8) In home page go to search box, digit something and press enter, you can see: "Session status: The session works" In this case form some unknown reason the session works

9) Disable Full Page Cache

10) Clear all cache type

11) Go to page "setsession/save"

12) Go to home page, now the session works so you can see: "Session status: The session works"

sunilit42 commented 8 years ago

But what is solution?

davidnguyen2205 commented 8 years ago

This issue is still reproducible in Magento 2.0.7. Actually, I faced to this issue in Magento 2.0.5 but after upgrading to 2.0.6, it worked fine. Now after upgrading to 2.0.7, this issue comes back...

100php commented 8 years ago

Could anyone find solution to this issue?

davidnguyen2205 commented 8 years ago

In version 2.0.6, it's working fine :)

100php commented 8 years ago

I tried 2.0.4, 2.0.6 and 2.0.7 all, but its still not working. If there is special patch in 2.0.6 please let us know.

dimple-vasoya commented 8 years ago

No its not working in 2.0.6 as well. Checked twice.

100php commented 8 years ago

Ok, We have resolved the issue...To update minicart on every action we have to update "vendor/magento/module-theme/etc/frontend/sections.xml" file. This updates "messages" section on every action.

Adding <section name="cart"/> on line no.12 will reload the cart on every action.

This worked for us.

slavvka commented 8 years ago

The message transport mechanism has been changed from customer data to cookies in 2.0.8 so most probably this problem will disappear in that version.

pantaoran commented 8 years ago

@slavvka you say it will switch mechanism in 2.0.8. Will that also be included in 2.1.0? I see some people above saying that this still happens in 2.1.0-rc1. Also, when will 2.0.8 come out?

slavvka commented 8 years ago

@pantaoran Yes, it is included in 2.1.0. Unfortunately I don't know the date of 2.0.8 release

Pigau commented 8 years ago

I kind have the same issue.

I found that my issue is in customer-data.js.

line 18 :

var storage = $.initNamespaceStorage('mage-cache-storage').localStorage;

The var storage got keys. The keys should be an array of the sections which must be reloaded with AJAX.

So the keys are an array like ["customer", "compare-products", "last-ordered-items", "cart", "directory-data", "review", "wishlist"] And then the AJAX request like http://mydomain.com/customer/section/load/?sections=&update_section_id=false&_=1466686334395

But the fact is storage.keys() is empty and the AJAX request doesn't exist. Do you, guys, have the same behaviour ? Do you know how to fix it ?

Thanks,

Magento ver. 2.0.2

josegreyes commented 8 years ago

We were having the same issue that Pigau is describing on Centos 6.5. We moved the installation to a Centos 7.2 instance and the error disappeared and started working as expected. We also tried it on an Ubuntu 14.04 machine and it worked there as well, no change to the code were required.

sengaigibon commented 8 years ago

@slavvka Due to the comments about this bug is still happening I want to re-open this issue but I couldn't find where or how... thanks

100php commented 8 years ago

@Pigau ,this is related to cookies, the key do not get created if you are using private browser. Please check once in regular browser.

@josegreyes , OS should not make any difference to the code. Please check the PHP version that might be helping you solve the issue.

slavvka commented 8 years ago

@sengaigibon Due to comments above the bug is still happening on old Magento code (2.0.2, 2.0.6) but as I wrote previously it may work in the latest code (develop, 2.1.0, and 2.08 that is coming soon)

Pigau commented 8 years ago

Hello guys,

@100php, on my dev environment, I tried on :

On the remote server, it is a debian 7 and I use the same browsers. The problem is still here.

@slavvka, as I can't upgrade the Magento version right now, what do think I can do ?

Pigau commented 8 years ago

Edit : @slavvka I updated to 2.1.0, it didn't change anything. And now I have some errors on the code, so I'll go back to another version, maybe 2.0.6.

slavvka commented 8 years ago

@Pigau have you tried the solution from @100php with <section name="cart"/>?