Прежде всего начните использовать VCS (системы контроля версий), например Mercurial. Git тоже пойдёт. :) Чтобы когда сервер упадет судорожно не вспоминать что и где исправляли в последний раз, а просто откатиться почти моментально на последнюю рабочую версию, а потом спокойно разбираться.
Организуйте минимум двухступенчатую систему разработки — окружение разработчика (локально или на отдельном сервере/поддомене) и продакшен окружение, куда скрипты заливаются после хоть какого-то тестирования — правка файлов на рабочем сервере (или заливка их туда без тестирования хотя бы на синтаксис основного потока) очень плохая практика.
Откажитесь от использования ftp, да и других методов ручного деплоя, используйте ssh/scp/rsync и скрипты деплоя (самописные или, например, Capistrano). Как вариант, используйте средства VCS — с рабочего каталога коммитите изменения в репозиторий, на сервере мержите их оттуда с веб-каталогом, главное не забыть закрыть доступ из веба к служебным файлам VCS. Можно использовать хуки для второго процесса, но лучше все же контролировать его.
Используйте хотя бы примитивные миграции БД, не изменяете структуру БД «ручками» в phpmyadmin, а запускайте sql скрипты. Потом сможете хотя бы восстановить последовательность действий приведших к краху. И бэкапы БД даже перед незначительными изменениями схемы. То же к настройкам сервера (их тоже лучше хранить в VCS).
Современные IDE почти всё это позволяют делать через GUI, но сначала, имхо, лучше разобраться как оно работает в консоли.
Всё вышеизложенное написано на основании собственного горького опыта.