首页 > 解决方案 > PHP“重命名”找不到文件,但命令行“less”可以

问题描述

从服务器运行时,我从 PHP 收到以下错误

PHP警告:重命名(var/www/vhosts/example.com/httpdocs/dir1/papers/1632813138.pdf,var/www/vhosts/example.com/httpdocs/dir1/papers/00000006.pdf):没有这样的文件或第 98 行 /var/www/vhosts/example.com/httpdocs/dir1/processes/generate_abstract_pages.php 中的目录

如果我再跑

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)</p>

标签: phpfile-rename

解决方案


您可以使用getcwd()获取脚本的当前工作目录,以确保它从您期望的相对路径工作的位置运行。

您需要一个起始“/”才能使绝对路径起作用。


推荐阅读