Я хочу переименовать имя файла 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");
../
проходит по одному каталогу, в данном случае, родительскому каталогу. Использование ../
работает в окнах, не нужно использовать обратную косую черту.
Если вы все еще получаете сообщение об ошибке после внесения этих изменений, вы можете опубликовать свою структуру каталогов, чтобы мы могли все посмотреть на нее.