Обновлено
Вы проверили, записывает ли он информацию в каталог, отличный от ожидаемого? Проверьте свой путь, чтобы увидеть, где он по умолчанию, или даже просто выполнить поиск файла и посмотреть, где еще он появляется. getcwd () покажет текущий рабочий каталог.
Вы проверили возвращаемое значение fwrite, чтобы увидеть, действительно ли запись работает? Если fwrite успешен, попробуйте прочитать файл в коде, используя тот же $ id_file, и посмотрите, есть ли что-нибудь там, пока программа еще работает.
Вы дважды звоните в fopen. w + усекает файл, а вы записываете во второй $ id_file, поэтому я предполагаю, что он усекается при закрытии 1-го $ id_file.