Кроме того, как сказано в file_put_contents man page
в php.net
, остерегайтесь проблем с именами.
file_put_contents($dir."/file.txt", "hello");
может не работать (даже если это правильно для синтаксиса), но
file_put_contents("$dir/file.txt", "hello");
работает. Я испытал это на разных серверах, установленных php.