Web Server Transition - January 2011

In January 2011, we transitioned from Web Servers running in Solaris/SPARC Zones to Linux/x86_64 Virtual Machines. In addition to the change in architecture, there will be some changes to versions of PHP and supporting libraries. This page describes the changes in detail and provides information so that users who maintain web sites on the CS web servers can transition smoothly.

Language Changes

The official PHP document outlining the changes between 5.2.x and 5.3.x is here, including the backward-incompatible changes.

Register Globals

The biggest change that will be affecting people is likely to be the removal of "register_argc_argv" and "register_globals". The former means that any arguments passed to a script like:

http://www.cs.princeton.edu/~user/example.php?value=1


will change such that where previously $value was automatically available to the script having a value of "1", that same information will now have to be accessed using either $_GET["value"] or $_REQUEST["value"], the former as the method used was "GET", and the latter the more generic verison, which includes key/value pairs from POST operations.

"register_globals" refers to any environment variables, such as cookies or PHP_SELF, need to be accessed using the required array ($_COOKIE or $_SERVER in the examples, respectively).

CGIs and DOS Files

A second change relates to CGI scripts when those scripts are DOS format files (characterised by CTRL-M (^M) characters at the end of each line). The new server is sensitive to this, and will return an error on execution. The easiest way to do the conversion is with the "dos2unix" utility provided on our cycle servers. The use is straight-forward, but a man page is available (man dos2unix).

DNS Resolver

We have turned off the DNS resolver in Apache, meaning that requesting clients' addresses are by IP only. Any log analysis or information gleaned from environment variables will need to do its own DNS resolution first, if necessary.

Tags: