переименовать файл в php

Я хочу переименовать имя файла picture (без расширения) в old.jpg из этого кода.

У меня есть файл picture в родительском каталоге, и путь правильный

 $old="picture"; $new="old.jpg"; rename($old , $new); 

или эти коды

 $old="\picture"; $new="\old.jpg"; rename($old , $new); $old="../picture"; $new="../old.jpg"; rename($old , $new); $old="../picture"; $new="old.jpg"; rename($old , $new); $old="./picture"; $new="./old.jpg"; rename($old , $new); rename("picture", "old.jpg"); 

Но я получаю эту ошибку:

  Warning: rename(picture,old.jpg) [function.rename]: The system cannot find the file specified. (code: 2) in C:\xampp\htdocs\prj\change.php on line 21 

Относительный путь основан на сценарии, который выполняется ( $_SERVER['SCRIPT_FILENAME'] при запуске на веб-сервере), который не всегда является файлом, в котором выполняется файловая операция:

 // index.php include('includes/mylib.php'); // mylib.php rename('picture', 'img506.jpg'); // looks for 'picture' in ../ в // index.php include('includes/mylib.php'); // mylib.php rename('picture', 'img506.jpg'); // looks for 'picture' in ../ 

Поиск относительного пути предполагает сравнение абсолютных путей как исполняющего скрипта, так и файла, который вы хотите использовать, например:

 /var/www/html/index.php /var/www/images/picture 

В этом примере относительный путь: ../images/picture

Вам нужно использовать абсолютный или относительный путь (возможно, в этом случае лучше). Если он находится в родительском каталоге, попробуйте этот код:

 old = '..' . DIRECTORY_SEPARATOR . 'picture'; $new = '..' . DIRECTORY_SEPARATOR . 'old.jpg'; rename($old , $new); 

Как упоминал Сет и Джек, появляется ошибка, потому что сценарий не может найти старый файл. Вы заставляете его смотреть в текущем каталоге, а не на родителя.

Чтобы исправить это, введите полный путь к старому файлу или попробуйте следующее:

 rename("../picture.jpg", "old.jpg"); 

../ проходит по одному каталогу, в данном случае, родительскому каталогу. Использование ../ работает в окнах, не нужно использовать обратную косую черту.

Если вы все еще получаете сообщение об ошибке после внесения этих изменений, вы можете опубликовать свою структуру каталогов, чтобы мы могли все посмотреть на нее.