Windows 2008 and 2008R2 are awesome. One feature I missed the most from my Windows 2003 is the ability to assign/remove permission to/from MULTIPLE folder. For some reason Microsoft decided to take this functionality away from their GUI. I had to add/remove users from 20+ folders recently, and it’s not pleasant to do it manually on each folder. I can write the command line to do this using cacls or icacls, but i don’t always remember the slashes I need. So, I spent about half hour to create a simple windows application to accomplish this. Keep in mind that I only spent 30 minutes writing this app. So there is minimal error checking. One thing to keep in mind is that if you are granting or removing local groups, you should use builtin\group_name instead of server_name\Group_name. In the future, I will probably extend the functionality so I can select multiple folders using GUI.

To get started, just download the executable and run it.

Screen shot:

NTFSSetter - Assign/delete permission to/from multiple=

Executable

NTFSSetter

If you are an institution serving digital assets, and you are using CONTENTdm to serve your media, you might be interested in this Plug-in.

CONTENTdm provides a PowerPoint plugin you can made available on your server so that your users can download the plug-in and install it on their computer to download/import images they saved in their favorites directly to PowerPoint.

This is a great time-saving feature if a user need to frequently present using PowerPoint. However, this plug-in has several drawbacks:

  • Works only on PC computers, no MAC plug-in is available.
  • Works with Internet Explorer and FireFox only.
  • Will not work with OpenOffice Impress(the PowerPoint equivalent software from OpenOffice).
  • End-user installation is needed. I consider this a minor drawback only.

To resolve the problem mentioned above, I created a server side plug-in that requires no download and no install by end-users. I made everything web based, therefore eliminates platform dependency(works with PC or MAC) and browser dependency. It’s tested to work using the following popular supported browser. If you know that it works in any other, please let me know so I can add it to the list.

  • FireFox 2 or later
  • IE 6 or later
  • Google Chrome
  • Safari
  • Android Web browser

To learn more about the plug-in, you can visit Ball State Digital Media Repository. To download the plugin, you can click here.

I recently stumbled upon a PHP page that keeps timing out, even after increasing the activityTimeout value in IIS7.5. The error message was “The FastCGI process exceeded configured activity timeout”. This leads me to writing this how to. If you are not interested in installing PHP, you can jump right to bullet point 7.3 and on.

If you are using IIS7 or 7.5, the best practice recommended by Microsoft is to use the Web Platform Installer(WPI). While this makes installation quick and easy, it really lack an option I desperately need. It never asked me where to store the PHP installation. It assume I want to install it under <%system%>\Program Files\PHP. What if I can NOT or do NOT want to store it in that folder??

NOTE: <%system%> is the drive letter where you install your Windows Operating System to.

The easiest way is to let WPI install it, and we’ll just worry about modifying the installation.

  1. Install PHP using WPI
  2. Stop your web server(IIS)
  3. Move the PHP folder from <%System%>/Program Files to any Location you wish. For this example, I’m moving it to E:\, so that my PHP installation is in E:\PHP
  4. Change your environment(system) variable(Right click on computer, Properties, Advanced system settings, Advanced tab, Environment variables). If you can’t find any entry that points to the default PHP install location, you can skip this step.
    • Double Click on Path, and change every reference to <%System%>/Program Files/PHP to E:\PHP
    • Double click on PHPRC, and do the same thing
    • If you see anything else that refers to <%System%>/Program Files/PHP, change them all to E:\PHP.
    • Environment Variables

      Environment Variables

  5. Change your php.ini settings. Locate your php.ini file and look for <%System%>/Program Files/PHP entry. Change them all to E:\PHP.
  6. Now you need to tell IIS to use the PHP executable from a different location(as opposed to from <%System%>/Program Files/PHP) to process PHP file request.
    • Launch your IIS manager, and click on the ROOT entry just right under Start Page.
    • Double click on Handler Mappings, and locate *.php entry under Path. If you are using WPI, there should be an entry called PHP_via_FastCGI
    • Handler Mappings

      Handler Mappings

    • Double click on it, and change the executable path to use the PHP-CGI.exe file in E:\PHP\
    • If you have sites defined, make sure you check the module settings for each site. Changing the root should take care all the Sites, but it never hurts to double check
  7. Change your IIS configuration. You can either use the IIS admin pack(built in in IIS7.5), or you can edit the configuration file directly.
    1. Open C:\Windows\System32\inetsrv\config\applicationHost.config file with a notepad
    2. Look for <%system%>/Program Files/PHP entry, and change them all to E:\PHP
    3. locate <fastCgi> tag. Make sure you only have one <application> tag defined for your PHP installation. If you are seeing two <application> tag entry for PHP, remove the one that contains less text, and make sure the one that stays has a fullPath attribute of E:\PHP\php-cgi.exe(or whatever your path is).

What happened to me prior to this post was, I did all the steps through steps 6, but i didn’t do step 7. A web developer was complaining that his debugger keep timing out after 70 or so seconds. I set the timeout period to a lot more than 72 seconds, but it didn’t seem to take it. I found out that the application path is still pointing to the default installation of PHP in <%system%>/Program Files, and there are 2 <application> tag entries for PHP installation. The first one was the default installation entry, the second was the custom path entry(in E:\PHP). I changed the activityTimeout property of the first <application> tag entry. No wonder it didn’t work the first time I tried it. After deleting the second entry, and modifying the first one, the debugger session stays longer than 72 seconds, and my web developer is back to happy zone again :)