У меня странная проблема с моим php. Всякий раз, когда я пытаюсь переместить файл с помощью rename (), не только файл не перемещается, но также удаляется каталог, в который он должен быть скопирован, вместе со всеми файлами в нем. Исходный код:
rename('temp.odt', 'tmp/report.odt');
, но я уже пробовал другие разделители путей, такие как
rename('temp.odt', 'tmp\report.odt');
rename('temp.odt', 'tmp\\report.odt');
rename('temp.odt', 'tmp' . DIRECTORY_SEPARATOR . 'report.odt');
rename('C:\wamp\www\zaiko\temp.odt', 'C:\wamp\www\zaiko\tmp\report.odt');
, все безрезультатно. Код поступает из стороннего модуля, который используется в системе, над которой я работаю.
Точки хорошо проверены:
После выполнения rename () команда 'temp.odt 'не поврежден в своем исходном месте, а папка' tmp ' исчезла , как и все, что внутри нее. Выдается следующее предупреждение:
(!) Предупреждение: rename (temp.odt, tmp \ report.odt) [function.rename]: системе не удалось найти указанный путь *. (код: 3) в C: \ wamp \ www \ zaiko \ modules \ mod_deliver.php в строке 192
* переведено с португальского
Запуск: Apache 2.2.17 с PHP 5.3.5 в Windows XP с NTFS
Редактирование:
Только что нашел причину проблемы. Оказывается, модуль, используемый приложением, в свою очередь, использует библиотеку сжатия; в этой библиотеке используется временная папка с точно таким же именем, как и в приложении.
Он должен использовать какой-то кеш, который объяснил бы, почему ошибка не появлялась 100% раз.
Проблема решена изменением имени папки 'tmp' на любое другое.
Всем спасибо за ваше время и извините за то, что беспокоили вас такой глупостью, которая, как оказалось, не имела абсолютно никакого отношения к моей первоначальной догадке и, следовательно, к сформулированному вопросу.