PHP重命名(),如果我用前缀ARGS不工作了 “/”

问题描述:

这工作:PHP重命名(),如果我用前缀ARGS不工作了 “/”

rename("box/". $picture , "box/tmp/". $picture); 

这不:

rename("/box/". $picture , "/box/tmp/". $picture); 

所生成的文件/目录未找到错误。

这看起来很卑鄙,但是我的代码存在问题,并且潜在的问题可能是我的另一个问题的根本原因。

感谢

+3

'rename(“box /”)'是相对于当前目录的路径。 'rename(“/ box /”)'是相对于根目录的绝对路径。这些是非常不同的事情。这个例子可能有助于说明不同之处:http://en.wikipedia.org/wiki/Path_(computing)#Unix_style – 2012-02-14 02:16:11

+0

只是好奇你为什么认为在目录名称之前添加一些任意字符不应该破坏所有内容? – zerkms 2012-02-14 02:19:04

+0

我认为这是可选的,因为在我的很多html中,我所有的脚本都包含前缀'/'。认为它是正确的编码来指定一个目录。 – lewicki 2012-02-14 06:48:16

rename作品与文件系统路径,而不是基于对DOCUMENT_ROOT,除非你有一个非常奇怪的设置,然后/box(或c:\box在Windows系统上)心不是要去即使它,除非你的存在和网络服务器将无法写入。

你可能需要的是更多的东西是这样的:

rename($_SERVER['DOCUMENT_ROOT'].'/box/' . $picture, $_SERVER['DOCUMENT_ROOT'].'/box/tmp/' . $picture); 
+1

jinx no jinxbacks – 2012-02-14 02:13:10

+0

谢谢你!你欠我可乐。 – prodigitalson 2012-02-14 02:18:17

,除非你有一个名为“盒子”,把你的文件系统的根目录下,你的第二个例子是行不通的。主要的斜线意思是“在文件系统的根部”。