PHPの基礎体力さんの、値の受け渡しのページの、「外部変数が獲得できない」のところに解説があります。

PHP4.2.0以降では、 register_globals が、デフォルトで OFF に設定されているため、「$変数名」という書式では、スクリプトに渡された変数を獲得できないそうです。

register_globals が、デフォルトで OFF になった理由は同サイトのセキュリティのページの「register_globals = On の恐怖」にあります。

PHPの基礎体力さんのところのPHP Tips参考になる記事が沢山あります。(ありがたく。)