Google humor: shut your piehole!

I was reading the documentation for using Google’s Chart features – specifically the how to create a donut chart documentation. It was all pretty routine boring documentation until the last sentence.

These little jokes are one thing I have always liked about Google! For what’s worth I am probably not going to use Google Charts. I had an internal app that used Google Charts to generate a QR code. Unfortunately, Google decided to stop supporting the generation of QR codes and have deprecated this feature. It looks like I am going to go with Flot.

Advertisement

IIS: Cannot add duplicate collection entry

Running IIS 7.5 (Windows 7) on a development machine when I visit a site I have been working on and get the following error:

What?!? This was working just the other day and I hadn’t changed anything on this site. In fact, this site is just a vanilla WordPress site used for documentation. Other than a child theme there is no coding work done here.

So, I open up IIS and attempt to view the properties for this site and I am greeted with this error:

Ok this helps, there is a problem with the web.config file, having to do with default documents. I remember making a change in IIS recently with default documents. The problem is on line 6 of the web.config file so lets go look at that.

Not much here – were just adding a “index.php” as a default document to this site. Now, I know what is going on. When I setup PHP on this machine I added “index.php” to the list of the default documents for the site I was working on at that time. As I created new sites I added “index.php” as a default document local to the site.

A couple of days ago while adding another site and decided instead of adding “index.php” to the local site’s default documents I would add it to the IIS server’s list of default documents. This would be inherited by all the sites.

There it was I created a situation where the server had a default document of “index.php” and I had a site with a web.config file where I was attempting to add another default document of “index.php” – a duplicate collection entry.

Since, the addition of a default document was the only thing in the web.config the fix was simple – delete the web.config file (I renamed it to test before deleting). After deleting the web.config file IIS was able to display the site’s properties without error:

Viewing the default document properties for the site showed “index.php” was still a default document and it was inherited from the IIS server.

Check php.ini for syntax errors

In the middle of setting-up a new webserver on a Windows Server 2008 machine using IIS7 and PHP 5.4 I ran into a problem that had me stumped for a short time. Though not something that is done frequently setting-up PHP on a Windows server is something that I am well-versed in doing. I know of the most common stumbling blocks and how to get around them – especially on Windows machines.

A common issue for those new to PHP is the php.ini file. Most problems can be attributed to editing the wrong one (albeit a more common problem years ago). This morning I was editing the php.ini on my new server using my normal routine: copy the supplied production version, open the php.ini file on my existing server, and making the new version match as close as possible. The only problem was it appeared the PHP was ignoring the timezone setting in the PHP.

Warning: phpinfo(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone. in C:\Websites\AP-WWW\pinfo.php on line 2

I was willing to ignore this warning for the time being but, I was also experiencing a problem with MySQL. I was getting the following error: Fatal error: Call to undefined function mysql_connect(). I checked the usual cause – the location of the php.ini file and made sure I was editing the correct file:

I checked the file permissions, folder permissions, rebooted the server, etc. No matter what I did I kept getting the warning that PHP was assuming UTC for the timezone and displayed the lack of a setting for date.timezone in the php.ini file:

The most common cause I could find was to a misspelling of the timezone or using quotes on the line in the php.ini file. This seemed unlikely since I had copied-and-pasted the value from PHP.net’s website and from the php.ini file from my current PHP server.

Fortunately, the source of my frustration was easily identified when I went to compare the information by phpinfo() in a browser to the information displayed in the PHP CLI. From a DOS command window I ran the command php -i which displayed the following error:

When I looked at line 810 of the php.ini file I immediately saw the problem on line 809:

Fixing the error on line 809 and restarting IIS allowed PHP to recognize the timezone setting and eliminated the error connecting to MySQL: