PHP «переименовать» не удается найти файл, но командная строка «меньше» может - PullRequest
0 голосов
/ 28 февраля 2020

Я получаю следующую ошибку от PHP при запуске с сервера

PHP Предупреждение: переименовать (var / www/vhosts/example.com/httpdocs/dir1/papers/1632813138.pdf, var / www/vhosts/example.com/httpdocs/dir1/papers/00000006.pdf): такого файла нет или каталог в / var / www/vhosts/example.com/httpdocs/dir1/processes/generate_abstract_pages.php в строке 98

Если я затем запусту

less var/www/vhosts/example.com/httpdocs/dir1/papers/1632813138.pdf в командной строке, он найдет файл. Я копирую / вставляю адрес, поэтому его случайно не меняют.

Я также пытался дать переименование относительного пути ../papers/1632813138.pdf, но это вывело ту же ошибку.

Относительный путь работает при запуске в браузере https://example.com/dir1/processes/generate_abstract_pages.php

<?php

$abstract["pdf_url"] = "1632813138.pdf";
$abstractId = 7;

$pdfFilename = str_pad($abstractId, 8, "0", STR_PAD_LEFT).".pdf";

$fileRenameSuccess = rename("../papers/$abstract[pdf_url]","../papers/$pdfFilename");

echo ($fileRenameSuccess ? "y":"n");

Запуск PHP 7.1.23 Запуск CentOS Linux 7.6.1810 (Core)

1 Ответ

0 голосов
/ 28 февраля 2020

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

Вам нужен запуск "/" для абсолютного пути к работе.

...