2014-04-13

GoDaddy PHP Upgrade from 5.3.x to 5.4.x Kills Sessions on IIS/Windows

The problem...

I spent a sleepless night on this one, but finally figured it out...

NOTE: This issue should only affect those on the GoDaddy Windows Hosting plan using PHP on IIS, but if I'm mistaken, please post your details and solution [if discovered] in the comments!)

I work on a PHP website that is in the process of being rewritten in ASP.NET MVC.  Because of this, the site has been set up on GoDaddy on a Windows Hosting plan with PHP running under IIS.  All was well through PHP versions 5.2.x and 5.3.x, but tonight needed to upgrade to 5.4 while we wait for the migration to be complete.

The site came up fine until I hit pages that required Session data.  It seemed that Sessions stopped working with my existing code.  After much troubleshooting, I discovered that the sessions were being written on the page setting the data, but when I hit another page that wanted to use said Session data, the Session was blank as if created new.

It turns out that there is a discrepancy on GoDaddy on the session.save_path used for PHP 5.2.x/5.3.x and PHP 5.4.x when hosted on the Windows hosting plan.

session.save_path comparison

PHP 5.2 and 5.3

session.save_path = C:\Windows\Temp\


PHP 5.4

session.save_path = D:\Temp\php\session\

The solution...

Now, I don't know if the directory doesn't exist, or if there aren't proper permissions set on the directory, but for whatever reason, it doesn't like that path.  After reverting back to 5.3.x and discovering the path difference, I re-upgraded to 5.4.x and forced the session.save_path to C:\Windows\Temp\ using a ".user.ini" file in the root of my site on GoDaddy.

What to do...

  • Create/Edit ".user.ini" in the root of your site and make sure it has:
    session.save_path='C:\Windows\Temp\'
  • GoDaddy Control Panel | IIS Management | Recycle App Pool
    (This will ensure the PHP config overrides in ".user.ini" are loaded and used)
  • Enjoy access to $_SESSION again!
I hope this will save someone else a sleepless night.

6 comments:

Anthony Percivalle said...

I just want to say thank you, I could not for the life of me figure out why sessions weren't working. Godaddy was no help , they just point the finger at your code.

your a life saver. Thank you,

That One Guy said...

I'm so glad it helped!

Maybe most PHP users on GoDaddy are hosting on Linux, but they should definitely get a fix in for this. It's quite the hassle when you don't know why Sessions all the sudden stop working.

Anonymous said...

thanks a ton for this. saved me a lot of time!

Rony said...

You`re a GOD!
Thank you!

Anonymous said...

Thank you so much. I almost got fired because of that. Life savier.

Keith said...

You're a lifesaver!
Thanks for the info!