- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 php.ini 有一个奇怪的问题。每当我尝试使用 rename() 移动文件时,不仅文件没有移动,而且应该将其复制到的目录以及其中的所有文件都被删除。原代码为:
rename('temp.odt', 'tmp/report.odt');
但我已经尝试过其他路径分隔符,例如
rename('temp.odt', 'tmp\report.odt');
rename('temp.odt', 'tmp\\report.odt');
rename('temp.odt', 'tmp' . DIRECTORY_SEPARATOR . 'report.odt');
rename('C:\wamp\www\zaiko\temp.odt', 'C:\wamp\www\zaiko\tmp\report.odt');
一切都无济于事。该代码来 self 正在使用的系统中使用的第 3 方模块。
正确检查点:
运行 rename() 后,'temp.odt' 文件在其原始位置完好无损,而文件夹 'tmp' 以及其中的所有内容都消失了。发出以下警告:
( !) 警告:重命名(temp.odt,tmp\report.odt)[function.rename]:系统找不到指定的路径*。 (代码:3)在 C:\wamp\www\zaiko\modules\mod_deliver.php 第 192 行
*翻译自葡萄牙语
正在运行:Apache 2.2.17 和 PHP 5.3.5 在带有 NTFS 的 Windows XP 上
编辑:
刚找到问题的原因。事实证明,应用程序使用的模块反过来使用了一个压缩库;该库使用一个与应用程序使用的名称完全相同的临时文件夹。
它必须使用某种缓存,这可以解释为什么错误没有出现 100% 次。
通过将“tmp”文件夹的名称更改为其他名称解决了问题。
感谢大家抽出时间,很抱歉用这么愚蠢的事情来打扰你们,事实证明,这与我最初的猜测完全无关,因此也与提出的问题无关。
最佳答案
PHP.net 上的示例告诉您确切的操作 - 使用文件的 ROOT PATH - 通常这可以通过使用 $_SERVER['DOCUMENT_ROOT']
获得(但这只会进入 htdocs/public_html 目录 - 你需要指定其余部分)或手动输入路径(但尽量避免这种情况)。
<?php
rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
?>
猜测,以下应该有效(假设这是你的路径)——这也会检查你的文件是否确实存在,以便它可以重命名——你需要确保 tmp/
确实存在首先,但如果没有,你会弹出一个错误:
<?php
$root = getcwd().DIRECTORY_SEPARATOR; // Obtain the current working dir
$srcpath = $root."temp.odt"; // The file you want to rename
$destpath = $root."tmp/report.odt"; // Where you want to rename the file to
// make sure file exists and its movable
if(is_writable($srcpath)){
// if it exists, rename it
rename($srcpath, $dstpath);
echo "File was renamed!";
} else {
echo "It seems that the specified file doesn't exist!";
}
?>
您使用反斜杠转义字符 - 始终使用正斜杠(我知道这是在单引号内,没关系,但如果您使用双引号,那么您会想知道出了什么问题)!
关于php - PHP 中 rename() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257127/
我已经阅读了几个小时的 rsync 文档,但我无法弄清楚如何向 rsync 传达如何仅重命名(而不是重新上传文件夹及其内容)目标文件夹,当它们在资源。 我正在使用 SSH 连接到目的地,本地文件夹是源
我正在使用 MySQL。这是一个例子,我想将表 A 重命名为 B,那么以下语句之间有什么区别: alter table A rename to B; 还有这个: rename table A to B
当我在解决方案资源管理器中选择文件或目录并按下 F2 键时,我试图让 Visual Studio 重命名文件。但是,我还希望 Visual Studio 在我按 F2 时进行重构重命名,并且我在编辑器
我无法让 objcopy --rename-sym 工作。 在一个新的 Android 项目中,我创建了目录 jni 和文件 stub.c: #include #include "dlog.h" j
MKPinAnnotationView 在 iOS 15 中重命名为 MKMarkerAnnotationView。 在 iOS 14 之前,我将 MKPinAnnotationView 子类化为 c
如果您调用 os.rename提供不存在的文件或目录,OSError通过将其设置为 None 来忽略文件名.这是 2.6 中的错误,已在某些更高版本中修复? 您只需执行以下操作即可重现该问题: pyt
假设我的前面板有 100 个按钮,名称为“按钮 1”...“按钮 100”。如何快速将它们全部重命名为“Push Button 1”...“Push Button 100”? 最佳答案 与 Dave_
考虑下面这个愚蠢的例子 theory meta_all imports Main begin lemma strict_subset: "⟦ A ⊂ B ⟧ ⟹ ∃a ∈ B. a ∉ A" appl
我正在尝试使用以下代码重命名节点,我需要将节点的 ID 和新名称传递给 server.aspx 如何获取节点的新名称 如何将这两个值传递到 server.aspx 页面 谢谢 .bind("re
我需要一个脚本,允许我将文件名剥离到文件夹中的文件,并将文件夹名称应用于文件,并在每个文件名的末尾添加一个递增的数字。 因此文件名在其原始状态下看起来像这样: gdgeregdja34gtj.jpg
以前,在突出显示 Java 文件中的变量名称后使用 ALT+COMMAND+R 组合键将进入重命名重构模式。现在,组合键将突出显示的文本替换为注册商标符号。 如何让组合键进入重命名重构模式而不是插入符
我有一个 Linux Qt 应用程序,它创建了一些 QThreads . 我知道当你创建一个线程时,它会继承父名,当我使用 htop 时我可以看到它。或 ps ax -L . 是否可以通过像 ps a
在处理器中,为什么我们不能简单地增加寄存器的数量,而不是拥有一个巨大的重新排序缓冲区并映射寄存器以解决名称依赖关系? 最佳答案 原因很多。 首先,我们经常设计微架构来执行现有架构的程序。添加寄存器会改
rename如果 newname 指向不同的驱动器,实际上会复制文件(至少在 Windows 10 平台上)。 有没有办法避免这种情况?我希望它在这种情况下失败。 假设我要移动 100 GB 的文件。
从业务角度来看,问题就出在这里 我们有许多人们使用的共享文件夹,我们称之为//shared/the/drive。但是,我们的服务器可能知道这个共享驱动器是其他名称,可能是 //ir83pn3br8mw
我从 XML 文件中读出它们的类别,然后重命名并保存它们的年份。因此,文件“XYZ.xml”现在是“News_2014.xml”。 问题是,从 2014 年开始,有多个 XML 文件的类别为“新闻”。
假设您有一个名为 foo 的文件包含一些确定的字节序列 X ,并且您想自动将其替换为名为 bar 的文件包含一个字节序列 Y .这通常使用 rename() 完成系统调用---在这种情况下,通过调用r
我正在尝试重命名用户指定目录中的一堆文件,但它似乎只在用户指定程序运行的目录时才有效。例如,从命令行运行时: ./a.out 。 “NewName.txt” 将起作用,而 ./a.out .. "Ne
这个问题可能看起来有点奇怪,但我会尝试对用例进行一些争论。 假设您有一个二维(笛卡尔)场的通用实现,其维度为 dim1 和 dim2,坐标为 c1 和 c2。 struct Field2D { s
我正在使用一个 php 应用程序,其中有一行用于移动文件。我将该方法包含在一个 try...catch block 中,因此,如果抛出错误,可以管理回滚系统。但是从未捕获到异常,那么重命名会引发任何类
我是一名优秀的程序员,十分优秀!