unlink() не работает с двойной обратной косой чертой

Я пытаюсь удалить файл таким образом:

define('DESTINATION_FOLDER','c:\temp\\');  
unlink(DESTINATION_FOLDER.$dest_filename);

И $dest_filename выглядит примерно так: 2jfioj23488hgh83hr.zip

Но это не работает. Когда я помещаю путь в переменную и повторяю его, он печатает:

c:\temp\2jfioj23488hgh83hr.zip

Затем я копирую/вставляю его в unlink():

unlink('c:\temp\2jfioj23488hgh83hr.zip')

И это работает. Я думаю, проблема в двойной обратной косой черте. Но как мне определить путь, не используя двойную обратную косую черту? Я не знаю, почему это не работает. Строка чуть выше этого кода:

copy((DESTINATION_FOLDER.$dest_filename),($extract.'\\'.$dest_filename));

И это работает нормально, но unlink не работает с тем же синтаксисом.


person Pouria P    schedule 15.07.2012    source источник
comment
У меня не было большого опыта написания PHP на сервере Windows... Какова цель двойной обратной косой черты в пути? Кажется, вы вручную добавляете его в свой оператор define — я предполагаю, что он имеет какое-то другое значение?   -  person Lix    schedule 15.07.2012
comment
Если это работает с одинарной обратной косой чертой, почему вы вообще пытаетесь использовать двойную обратную косую черту?   -  person JJJ    schedule 15.07.2012
comment
если я добавлю одну обратную косую черту перед одиночным qoute, php экранирует одиночный qoute.   -  person Pouria P    schedule 15.07.2012
comment
А если убрать все косые черты? Вы можете добавить их обратно при объединении пути... define('DESTINATION_FOLDER','c:\temp');   -  person Lix    schedule 15.07.2012
comment
На каком сервере это работает? Я использую Wamp на своем локальном компьютере с Windows, и я могу использовать косую черту для путей к каталогам, таким образом полностью избегая этой проблемы... Wamp использует сервер Apache   -  person Dale    schedule 15.07.2012
comment
Я до сих пор не понимаю проблемы. Теперь это работает или не работает с одной обратной косой чертой, содержащейся в пути? Я бы сказал, что должен, и понятно, почему здесь одинарная, а не двойная обратная косая черта. Так в чем проблема?   -  person arkascha    schedule 15.07.2012
comment
я даже не пробовал косую черту. они работают, спасибо Дейл   -  person Pouria P    schedule 15.07.2012
comment
Я предполагаю, что вы используете xampp, wamp или какой-либо другой локальный http-сервер на своем компьютере в качестве тестового сервера для чего-то, что вы можете в конечном итоге разместить на сервере онлайн-хостинга. Если это так, то вы должны это знать. Большинство онлайн-серверов, поддерживающих php, используют linux в качестве ОС, поэтому этот путь к файлу не будет работать. Поэтому я бы предложил определить корень вашего сервера в константе, используя $_SERVER['DOCUMENT_ROOT'] и/или используя относительные пути.   -  person bluegman991    schedule 15.07.2012


Ответы (2)


Размещение моего комментария в качестве ответа на вопрос

Попробуйте использовать косую черту вместо обратной косой черты :)

person Dale    schedule 15.07.2012

Если по какой-то причине вы должны использовать обратную косую черту, вам нужно использовать c:\\ вместо c:\

define('DESTINATION_FOLDER','c:\\temp\\');

person Sarwar Erfan    schedule 15.07.2012