PHP根目录

8
rename('/images/old_name.jpg', '/images/new_name.jpg');

这段代码提示文件不存在

调用文件的脚本放在/source/文件夹中。

文件可以从http://site.com/images/old_name.jpg打开。

如何从根目录获取这些文件?


这个常见问题需要一个好的答案。 - Pekka
1
即使你操作正确,如果文件比较大,它也需要几分钟才能出现在目标文件夹中。 - jaisonDavis
2个回答

35

rename是一个文件系统函数,需要文件系统路径。但看起来你正在使用URI路径。

你可以使用$_SERVER['DOCUMENT_ROOT']将文档根目录的路径前置:

rename($_SERVER['DOCUMENT_ROOT'].'/images/old_name.jpg', $_SERVER['DOCUMENT_ROOT'].'/images/new_name.jpg');

或者更加灵活的方式,使用当前文件路径__FILE__dirname函数:

rename(dirname(__FILE__).'/images/old_name.jpg', dirname(__FILE__).'/images/new_name.jpg');

或者使用相对路径。由于你正在/script文件夹中,..可以向上走一级目录:

rename('../images/old_name.jpg', '../images/new_name.jpg');

我会使用rename(dirname(dirname(FILE)).'/images/old_name.jpg',[...])而不是rename('../images/old_name.jpg',[...])。这样它将相对于当前文件(调用rename的文件),而不是运行脚本,如果调用rename在一个包含的文件中,则可能会有所不同。 - Sebastián Grignoli

6

在 PHP 中,根目录(/)是文件系统的根目录而不是"webroot"。如果 PHP 文件位于/source/目录中,而图像位于/source/images/中,则可以这样使用:

rename('images/old_name.jpg', 'images/new_name.jpg');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接