Петр Гаврилов родился 30 июня 1900 года в селе Альведино Республики Татарстан. Окончил Казанскую центральную крещено-татарскую школу. В юности много трудился. В пятнадцать лет поступил на завод чернорабочим в Казани. Там участвовал в установлении Советской власти
Весной 1918 года Гаврилов вступил добровольцем в Красную Армию. Сражался на Восточном фронте против войск Колчака, затем против войск Деникина и повстанцев на Северном Кавказе. После окончания Гражданской войны остался в армии.
В сентябре 1925 года окончил Владикавказскую пехотную школу. Позднее получил дополнительное образование в Военной академии имени Фрунзе. В звании майора назначен командиром 44-го стрелкового полка. Участвовал в Советско-финской войне. Затем вместе с полком перевелся в Западную Белоруссию, с мая 1941 года дислоцировался в Бресте.
После нападения немцев на крепость Петр Гаврилов возглавил группу бойцов из 1-го батальона своего полка и мелких разрозненных подразделений 333-го и 125-го стрелковых полков. Сражался на валу у Северных ворот Кобринского укрепления. Затем возглавлял гарнизон Восточного форта, где с 24 июня сосредоточились все защитники Кобринского укрепления. В своем распоряжении имел около 400 человек с двумя зенитными орудиями, несколькими 45-мм пушками и четырехствольным зенитным пулеметом.
После бомбардировки Восточного форта вечером 29 июня Гаврилов с остатками своей группы укрылся в казематах. Несколько дней группа совершала вылазки, пока не была рассеяна. Оставшись один, 23 июля тяжело раненным попал в плен. Содержался в лагерях Хаммельбург и Равенсбрюк до мая 1945 года.
После освобождения из немецкого плена Петр Михайлович исключен из партии ввиду утраты партбилета. Однако, восстановленный в прежнем воинском звании, осенью назначен начальником советского лагеря для японских военнопленных в Сибири, где получил несколько благодарностей по службе.
В связи с сокращением вооруженных сил Петр Гаврилов уволен в отставку и уехал в Татарстан. В 1957 году после издания книги «Брестская крепость», в которой показан подвиг гарнизона крепости, восстановил членство в партии и представлен к награде.
Указом Президиума Верховного Совета СССР от 30 января 1957 года за образцовое выполнение воинского долга при обороне Брестской крепости и проявленные при этом мужество и героизм Гаврилову Петру Михайловичу присвоено звание Героя Советского Союза с вручением ордена Ленина и медали «Золотая Звезда».
Впоследствии Гаврилов совершил ряд поездок по СССР, активно занимался общественной работой. С 1968 года до конца жизни жил в Краснодаре.
Петр Михайлович Гаврилов скончался 26 января 1979 года в Краснодаре. Похоронен с воинскими почестями на гарнизонном мемориальном кладбище Бреста.
Медали «Золотая Звезда»
Два орден Ленина
Медали
Именем Гаврилова названы улицы в Казани, Бресте, Краснодаре, Иркутске и Пестрецах
Его именем также был назван колхоз в родной деревне Альвидино
Именем Гаврилова назван пик в Центральном Тянь-Шане
В Альвидине, родном селе Петра Гаврилова, был открыт его музей
В искусстве
Книги «Брестская крепость» и «Герои Брестской крепости»
Личные воспоминания П. М. Гаврилова были дважды изданы в Краснодаре: в 1975 и 1980
Подвиг майора Гаврилова был показан в ряде кинофильмов:
Фильм «Бессмертный гарнизон» 1956 года
Фильм «Битва за Москву» 1985 года (роль Гаврилова исполнил Ромуалдс Анцанс)
Фильм «Брестская крепость» 2010 года (роль Гаврилова исполнил Александр Коршунов)