php - 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>
解决方案
您可以使用getcwd()获取脚本的当前工作目录,以确保它从您期望的相对路径工作的位置运行。
您需要一个起始“/”才能使绝对路径起作用。
推荐阅读
- android - 是否可以知道 Alt Beacon 上次在 Android 上扫描信标的时间?
- mongodb - 查找比数据库中特定记录便宜的所有记录
- xcode - Xcode 新构建系统不会构建 SDK pod
- angular - Angular 类封装
- substrate - 使用节点模板创建私有 Polkadot 区块链
- flutter - 颤振从列表中删除项目导致完全重建
- c# - 如何使用 openXml 为特定单元格添加颜色?
- reactjs - react npm build 在选项卡上显示 favicon,但它只是一个空白页面
- google-play - 如何在 Google Play 控制台上导入/导出可用国家/地区?
- c++ - 问题:FFmpeg 和 C++ 提取和保存帧