Cio' succede perche' utilizzando il
$ ed includendo la stringa nelle doppie virgolette, quello scritto dopo il simbolo verra' letto come una variabile a cui sostituire il valore, per ovviare a cio' hai due modi:
Fare un escape del dollaro:
"dir1/\$mia/nomefile.txt"
Utilizzare una sola virgoletta per indicare la stringa:
'dir1/$mia/nomefile.txt'
Se vai a vedere gli error di PHP molto probabilmente troverai una cosa del genere:
Undefined variable: mia in ... on line ...