【发布时间】:2018-10-21 14:33:32
【问题描述】:
在我的页面上,用户可以上传文档,这些文档将保存在用户特定的文件夹中。目录存储在一个 url 中:http://localhost/folder/user/documentA_user_timestamp.ext 在数据库中。
用户还可以删除文件,这会删除数据库中的文件条目,但我希望将文件移动到指定的存档文件夹。但是,当 php rename() 尝试执行其工作时,我总是会收到此错误消息:
http wrapper 不支持在...中重命名
我似乎无法理解错误消息并找出它的原因
$filepath = $_POST['file'];
$archivePath = FILESYS_DOCS_ARCHIVE . basename($filepath);
if (!file_exists(FILESYS_DOCS_ARCHIVE)){
mkdir(FILESYS_DOCS_ARCHIVE, 0777);
}
$success = rename($filepath, $archivePath);
if ($success){
echo "SUCCess";
} else {
echo $archivePath;
}
【问题讨论】:
-
php 是否显示一些错误?你检查过php错误日志吗?
-
调用重命名命令时
$filepath和$archivePath的值是多少?我猜其中至少有一个包含 URL 而不是磁盘上的路径。另请显示完整的错误消息,而不是其中的 sn-p。谢谢 -
@Sakezzz 问题中已经提到了错误...
-
@ADyson 两个值都是 url: "localhost/folder..." 我必须将它们转换为目录路径 "C:/...." 吗?
-
是的。否则,它会尝试向该 URL 发出 HTTP 请求,显然您无法通过 HTTP 重命名文件。不要忘记 PHP 是在你的服务器上执行的,所以它可以直接访问服务器磁盘,在这个过程中不需要通过 URL 或任何东西来引用它。