Constructing SSA form for static languages is a well-studied problem. Techniques exist to handle all of the most common features of static languages, and these solutions have been tried and tested in production level compilers for many years. In our study of optimizing dynamic scripting languages, specifically PHP, we find this is not the case. The information required to build SSA form -- that is, some conservatively complete set of unaliased scalars, and the locations of their uses and definitions -- is not available directly from the program source, and can not be derived from a simple analysis. Instead, we find a litany of features whose presence must be ruled out, or heavily analysed, in order to obtain a non-pessimistic estimate. Scripting languages commonly feature run-time code generation, built-in functions, and variable-variables, all of which may alter arbitrary unnamed variables. Less common -- but still possible -- features include the existence of object handlers which have the ability to alter any part of the program state, most dangerously a function's local symbol-table. Ruling out the presence of these features requires precise, inter-procedural, whole-program analysis. We discuss the futility of the pessimistic solution, the analyses required to provide a precise SSA form, and how the presence of variables of unknown types affect the precision of SSA.