Совет - прочитать книгу "Чистый код"(начиная с того, что вообще не понятно, что куча констант делают в теле цикла).
Тут принципиально именно то, о чем Вы написали или можете сформулировать задачу в принципе, если будет другое решение?
UPD. По стилю кода, $FileName - вообще не используется. $length, $chars, $numChars - константы и их не дело помещать в цикл. $final = $string.".png" и $finalTwo = 'img/'.$final лучше взять префикс и суффикс и опять-таки вынести за цикл. include_once конечно будет включен только один раз, но он будет каждый раз проверять, включен или нет - тоже за цикл. Если все-таки использовать эту идею, то можно создать несколько функций, например одна получает запрос, вторая генерирует имя, а третья сохраняет файл.
И еще, менять строку в цикле - это преступление, на него нужно идти осознанно! Это явно не тот случай, когда это стоило бы делать.
А вот то, как правильно генерировать уникальное имя файла:
www.elisdn.ru/blog/19/generaciia-unikalnogo-imeni-faila