Для затравки напишу-ка про парочку особенностей PHP, которые мало кто (в основном из начинающих) знает.
1. Наверное, многие сталкивались с такой проблемой, что в скриптах не хочет работать редирект. Вместо этого, интерпретатор PHP упорно выдает сообщение об ошибке. Это происходит потому, что где-то в вашем скрипте уже произошел вывод контента. Значит, посылать заголовки оператором header() становится бессмысленно. Собственно, PHP на это и указывает в своих сообщениях. Часто такая вещь происходит, когда в конце одного из подключаемых php-скриптов остаются пробелы или пустая строка, заметить которые иногда бывает проблематично. А остаются они после завершающей скрипт конструкции «?>». Интерпретатор получает знак «Все, php закончился, дальше идет прямой вывод в браузер». Ну и выводит. Как этого избежать? Очень просто: не ставить в конце скрипта «?>», интерпретатор на это не ругается, так даже правильнее.
2. Начиная с версии 5.2.1, в PHP изменился алгоритм формирования псевдослучайных последовательностей чисел с помощью функции mt_rand(). В документации это найти сложно, а вот я столкнулся с этим сам, когда при переходе с четвертой версии на свежую пятую оказалось, что скрипт, генерирующий случайные числа на основе задаваемого начального значения (с помощью функции mt_srand(), которую начиная с версии 4.2.0 вызывать необязательно, но она бывает нужна, если вам нужно формировать одни и те же последовательности), стал выдавать совершенно другие числа. Будьте бдительны. :)