Отладка состоит из двух основных пунктов
1. Включение полного отображения ошибок (или логирования, если на боевом сервере)
2. Пошаговая трассировка с контролем состояния переменных.
В вашем случае, очевидно что не был выполнен пункт №1. Какой бы ни была причина проблем, РНР всегда выдаст ошибку. Так что в вашем случае надо было просто убедиться, что error_reporting=E_ALL а dislay_errpos=1
А вот нижеследующее утверждение не имеет смысла
PHP данную ошибку не показывал, т.к. не использовалась функция проверки записи в директорию is_writable().
РНР не нужны никакие функции, чтобы сообщить об ошибке. А is_writable() обычно используется как раз наоборот, чтобы подавить ошибку и дальше работать как ни в чём не бывало. Ну или в лучшем случае выбросить какую-нибудь бессмысленную ошибку типа "Не могу записать в файл", не говорящую ничего о реальной причине проблемы.