Resolved PHP-CGI.exe terminated unexpectedly in Windows Server 2008 R2 and IIS 7.5

by Kev Ritchie 10. October 2011 13:27

I just installed PHP 5.2.17 on our new web server running Windows Server 2008 R2 64bit and IIS 7.5 and created a phpinfo.php file in the wwwroot folder to test that PHP had installed correctly.

However, on running the file, I was hit in the face with this nasty error: “C:\Program Files (x86)\PHP\php-cgi.exe terminated unexpectedly”.

After spending more than an hour trying to figure this out, I recall that I encountered this issue before on our previous web server; yes, making notes on previous gotchas is a must, there’s only so much information that can fit in this forgetful head.  So this will serve as a reminder to myself as well as help anyone else that comes across this error.

In the php.ini file make sure that you comment out the following sections to get past this error:

[PHP_OCI8]
extension=php_oci8.dll

[PHP_PDO_OCI]
extension=php_pdo_oci.dll
[PHP_PDO_OCI8]
extension=php_pdo_oci8.dll

[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PDO_SQLITE_EXTERNAL]
extension=php_pdo_sqlite_external.dll

[PHP_PSPELL]
extension=php_pspell.dll

[PHP_SYBASE_CT]
extension=php_sybase_ct.dll

Hope this helps everyone!

Note to self:  Remember that you wrote this post! Smile

The Critters

by Kev Ritchie 28. May 2011 22:26

 

WP_000088

Well after taking two days to recover after The Critters (yep, I’m getting too old for this partying malarky), I thought it’d be a good idea to give a quick update on the antics of the night; as well as trying to help me piece the night back together again (I blame the White Russian that Martin bought me Smile).

The adventure started around half past four in the afternoon, myself and Andy boarded the train and headed towards the Big Smoke. Trust me, this is exciting because there hasn’t been a train station in Corby for about 50 years. Excitement over.

After an hours journey and making ghost noises as we went through tunnels (we didn’t really, but a part of me wanted to), we arrived in London.  Now to find the hotel; which I wish we hadn’t!

We found ourselves staying at probably the worst Travelodge in existence; Travelodge Kings Cross Royal Scot.  Remember that name, DO NOT, I REPEAT DO NOT STAY THERE…EVER!! We arrived at the hotel, checked in, walked into the room (a twin room, before anyone says anything Smile), quite literally walked into the room; the door was broken (no card necessary, just pushed it right open).  WARNING: PICTURES OF ROOM TO FOLLOW.

WP_000091

Broken draws

WP_000092

Kettle and Mugs for…just hot water (another broken draw)

WP_000093

A mouldy window

WP_000095

And some wonky lights

Well, after the initial shock and figuring out how to lock the door.  We made our way to The Critters at The Hospital Club in Covent Garden.  It has to be said that we probably walked past the club a few times, until we noticed the building number, I might be visually impaired, but I’m sure the sign in the window said Tabitha’s.  Anyhoo, we ventured inside and all the bad memories of the hotel disappeared.

What an amazing place (well done ubelly!).  We all gathered upstairs (going through what I called the drinks corridor), one Stella for me thank you Smile  and had a quick scout about trying to put Tweeps to real faces.

My first brush with celebrity came when I met Sad Keanu , or was it Prince.  I’ve no idea why he was so sad, he was accompanied by two lovely ladies (Alex and Sara), who managed to snap the picture of me with Keanu.

After a bit of mingling and chatting with PeteTheDev & Matt Ballantine, the awards ceremony began.

All votes were cast using smart phones and the brilliant app Screach, none of this paper ballot stuff, results of which can be found here.  A huge congratulations to nominees and winners!  All well deserved Smile

It was then time (after a few more beers) to journey into the realm of the memetastic karaoke booth with Martin and sing Friday. I don’t have a copy of the video yet, but I have been informed that the “performance” is disturbing Smile.

Again some great chats with Simon, Dees & Rob Hawkes. Really inspirational guys!

It was soon after that I had a temporary lapse of memory, due to the White Russian (not the several glasses of wine)Winking smile I always forget that Vodka doesn’t agree with me. I have a vague recollection of singing Never gonna give you up (I assume there will be video evidence, I apologise in advance).  It wasn’t long after this, that we decided to depart.

[INTENTIONAL MEMORY LOSS NOW…NOTHING HAPPENED AFTER WE LEFT THE CRITTERS] Winking smile

My thanks have to go to the ubelly team for an amazing event and the invites, it was greatly appreciated.  The event of the year for me so far.  It was also great to finally put online faces to real faces,  everyone I met was friendly, amazing and inspirational.

Let’s hope for another event like this next year!

FIX–Installed IE9 but hyperlinks have stopped working

by Kev Ritchie 15. March 2011 14:41

I’ve been following the IE9 release with great enthusiasm, installing from beta all the way through to the full RTM.  The upgrade process to each version (beta, RC & RTM) was clean and I could browse away as normal. 

However, I’m sure you’ve noticed that this post is about a fix, so a little back story for you.

I’m a avid user of RSS feeds and have my favourite feeds (thebeebs, UK MSDN Blog and ubelly to name a few) delivered straight to my Outlook 2010 Inbox; now the problem.

Occasionally, I’ll click the View Article button in Outlook to see the article in it’s full glory or sometimes choose to navigate to links within the feed directly from Outlook 2010.  All of a sudden they stopped working, hyperlinks and the View Article button opened IE, but it didn’t load the content…well it did if you already had IE open Winking smile

Setting other browsers as my default, I didn’t encounter the problem.  OK, so the problem’s related to IE then.

After a little bit of digging and registry editing, navigating to links from Outlook is now working. Hurray!! Open-mouthed smile

The Fix

All I had to do was add %1 to the end of the String Value (outside the quotes) in the following registry key:

[HKEY_CLASSES_ROOT\SOFTWARE\Classes\htmlfile\shell\opennew\command]

image

Normal service can now resume!

Using Umbraco for the first time

by Kev Ritchie 26. November 2010 21:12

Yesterday, I spent a few hours tinkering with Umbraco.  For those of you that don’t know, Umbraco is an Open Source ASP.NET CMS (Content Management System).

Before I ramble on, a little back story for you.

I recently developed a website for my company that dynamically constructed the page content based on data retrieved from a SQL database.  Unfortunately, common in most development projects, the budget didn’t stretch as far as I needed it to Wink

So, the end result a really good CMS base, but no way of maintaining it; well unless you’re a whiz with SQL Server and fancy adding new pages and content through the SQL Server Management Studio.

It wasn’t until a few days ago, a friend of mine; Martin Beeby mentioned that he was looking into a CMS tool called Umbraco.  I was intrigued.

Now back to the present, an IE9 tab opened on Umbraco.org and an eager mouse hanging over the download link.

NOTE: There are two options for downloading.  You can use the Web Installer (which will do all the fiddly bits for you) or you can download the files for manual install.  Follow this link for more detail on the install options: http://our.umbraco.org/wiki/install-and-setup/how-to-install-umbraco-on-windows-server-2008

I chose the manual install option because I like to know what’s going on and how things hang together. 

After following the instructions in the link above, I fired up my browser (IE9 in case you didn’t notice before) and navigated to the Umbraco URL I had set up earlier, the Umbraco Configuration Wizard then appeared.  Part of the configuration was to install Runway (a basic website) or create a blank site.  My choice was to install Runway, the reason being that I could get an idea of what was needed to build a website.

After some familiarisation, I removed the Runway files (Document Types, Templates, CSS and Content).  One handy feature; in light of this, is the Recycle Bin.  If you make a mistake you can get your files back.

So, sitting with a now blank website structure in front of me, I needed to decide what I was going to put in it.  Yes, you guessed it, I decided to port over the website I created for the company.  This was an obvious decision because all the content and layouts had already been done.  All I needed to was a user friendly CMS.  Step in Umbraco. 

Diving straight into the Settings section (above), I created a new CSS file under Stylesheets and copied over the CSS from the other site.  I then created a new master page under Templates and copied over the HTML markup from the other master page.

 

As you will notice in the screenshot above, there are some more templates and also Document Types.  Document Types are extremely important and define the content for your site.  For more detail on this go to: http://our.umbraco.org/wiki/how-tos/working-with-document-types

When creating Document Types you have the option to create matching templates, I went with this as it saves time (well not too much Wink)).  I clicked on each newly created template and changed the Master Template option to the name of the master page I created earlier.  The screenshot  below shows this and also the markup copied from the other website.

You’ve probably noticed some <Umbraco:> elements in the screenshot above.  These relate to controls or objects created for example via the Document Types or the Developer section where you can create XSLT (Extensible Stylesheet Language Transformations) files and accompanying Macros.  In my case, I used XSLT and Macros to control the dynamic building of a list based on the Umbraco Related Links item.

It’s also worth mentioning that every template must have an <asp:content> element and the ContentPlaceHolderID  must match the Id of the ContentPlaceHolder in the master page.  If not, you will get either a compilation error or your content will not appear on the page.

With my CSS, templates, document types, XSLT and macros set up, it was time to create some content.

This was very easy.  I navigated to the Content section, right clicked on the Content node in the tree view and selected Create. 

I gave the new page a name (the name you enter for the page will be used in the URL with an .aspx extension), selected a document type (template) for the new page and clicked Create.  My new page appeared in the tree view (in a dirty state – highlighted by an asterisk) with all the fields set up previously in the selected document type.  Now it was just a matter of entering some content and publishing.

If you’re a stickler for procedures and want some control over what goes on to the web.  Umbraco has a nice permission set that allows you to give users Writer permissions (this means they can’t publish content, only send for approval) and Editor permissions (the ones that do the approving and publishing).  There is also the ability to lock users down to specific sections of the CMS.  So for example, if you give a user Writer permission and lock them down to just the Content and Media sections, they will only be able to create and save content.  So we have procedural control and security, nice Laughing

Final Thoughts

With just the few hours that I spent playing with Umbraco, I was able to move over my layouts and HTML markup and build up the new website exactly the same as the original, even adding more functionality than was possible before.  All this, without reading a single help file, which is testament to a well thought out and designed CMS.

Thanks Umbraco Laughing

Tags: , ,

Web

jQuery Festivities…yes it’s nearly Christmas!

by Kev Ritchie 18. November 2010 13:39

After reading The Beebs post on how to create a jQuery rollover like the one on Dribbble.com.  It got me thinking about how this or other effects could be used to create an Advent Calendar.

The animate function has been in the jQuery library for a while now (v1.0 I think, correct me if I’m wrong), but I thought that even though it’s not a new function of jQuery, it’s exactly what I need to achieve my goal…a door sliding effect.

Click here for a demo

If you want to replicate it, here are a few steps to help:

1. Add a reference to the jQuery library:

<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js" language="javascript"
        type="text/javascript"></script>

2. Next write a little HTML mark-up to build each of the calendar doors:

<div class="day">
    <div class="overlay">
        <img src="bells25.jpg" />
        <h2>1</h2>
    </div>
    <img class="image" src="1.jpg" />
</div>

3. And now for some styling.  Or in my case an attempt Smile

<style>
        .day
        {
            position: relative;
            border: solid 2px black;
            width: 150px;
            height: 150px;
            display: inline-block;
            overflow: hidden;
            margin: 5px;
        }
        
        .overlay
        {
            font-size: 2.0em;
            text-align: center;
            width: 150px;
            height: 150px;
            background-color: #ffffff;
            /*  Setting the position to absolute here keeps the image and text on top */
            position: absolute;
            z-index: 1;
        }    

        .image
        {
            position: relative;
            width: 150px;
            height: 150px;
        }

        h2
        {
            color: red;
        }
</style>

4. Now for the jQuery magic.  In step 2 we defined our layout using DIVs, each DIV had a class name, these names are important for this step to work.

First we add a jQuery ready function that will fire when the document is ready.  In this function, we immediately start to hook up our methods to create the “sliding door” effect.  We search the document for a DIV called .day and attach a hover function to it.  We then search that DIV for another DIV called .overlay.  When this element is found, we add the animation using the animate function.

We use two animate methods.  One to change the position of the overlay to the day DIV width and the second to set it back.

<script>

    $(document).ready(function() {

        $('.day').hover(function(){
        
        /* Get the day div width */
        var width = $(this).outerWidth();
        
        /* Change the position of the overlay to the day div width with an animation effect */
        $(this).find('.overlay').animate({ right : width },
                {queue:false,duration:300});
    }, function() {
        /* When the mouse is no longer hovering over the div set the position back. */
        $(this).find('.overlay').animate({ right : '0px' },
                {queue:false,duration:300});
        });

        /* queue:false = start the animation immediately, it won't wait for the previous 
animation to stop */
        /* duration:300 = how long the animation will take to finish in this case 0.3 
seconds. */
    });
    
</script>

Try the demo above.  Feel free to add to it criticise it, let me know how you get on!

Powered by BlogEngine.NET 2.5.0.6
Theme by Mads Kristensen | Modified by Mooglegiant

About Author

C# Senior .NET Developer with a passion for clean, maintainable and re-usable code. Loves to code and say a few words!

profile for Kev Ritchie at Stack Overflow, Q&A for professional and enthusiast programmers

Month List