Direi che il problema è nel contenuto della variabile $directory. Dove viene specificata, in un form?

PS: così com'è lo script è altamente vulnerabile ad attacchi, se puoi affidati ad una classe già creata che sia anche robusta e affidabile. Rischi che ti carichino di tutto e di più sul server :P
Qui una bella directory di classi: http://www.phpclasses.org/