您将需要提供错误,但您遇到的错误很可能是您尝试将文件复制到的目录不存在。也可能是权限问题,但您的困惑似乎在于构建路径。
您的代码的问题在于您的路径是 相对 到 PHP 文件的位置,而不是从根目录的直接路径。您应该阅读一些有关如何导航文件结构的内容,但以下是在 *nix 文件系统(例如 Linux)中工作时要记住的三个关键事项:
- 如果您的文件路径不以斜杠开头,则该路径将相对于 PHP 脚本所在的目录。
- 如果您的文件路径以斜杠开头,则该路径将相对于根目录。
- 您以一个或多个
../ 开始路径,以遍历父目录。
例如,假设您有这三个目录,您的 PHP 脚本位于 /php_codes:
- /php_codes
- /php_codes/code_sn-ps
- /个人资料
如果您想将文件复制到php_codes,您的路径将是相对于 PHP 脚本的:
$profiles = $_FILES['profile']['name'];
如果您想将文件复制到php_codes/code_snippets,同样您可以相对于您的 PHP 脚本执行此操作:
$profiles = "code_snippets/" . $_FILES['profile']['name'];
但是,这也是一个展示如何使用根目录的绝对路径进行操作的机会。您可以使用它(注意路径开头的斜杠):
$profiles = "/php_scripts/code_snippets/" . $_FILES['profile']['name'];
如果你想将文件复制到/profiles,它位于/php_codes 目录之外,有两种方法可以做到。
第一种方法是使用根目录的绝对路径(路径以斜杠开头),就像上面的示例一样:
$profiles = "/profiles/ " . $_FILES['profile']['name'];
或者,您可以使其相对,通过使用../ 上一级到父目录:
$profiles = "../profiles/ " . $_FILES['profile']['name'];
关于使用../ 上一级目录的快速说明:您可以根据需要重复多次,以继续上一级。例如,如果您的 PHP 脚本位于 /php_codes/code_snippets 内,但您想将文件复制到 /profiles,那么您必须上两层:
$profiles = "../../profiles/ " . $_FILES['profile']['name'];