move_uploaded_file如何构建上传目录

时间:2012-03-29 22:53:05

标签: php

我有一个简单的问题,但没有在谷歌找到答案。我正在构建一个必须在各种服务器上运行的应用程序,我不知道它是否将以root,subdir或任何其他方式安装。此外,我不知道它是否会安装在IIS,Apache或其他类型的od服务器上。我有一个令人讨厌的问题。如何构建一个总是好的上传目录。那个上传目录将在一个应用程序文件夹中,所以我有一点要开始,但我无法弄清楚如何编写正确的上传目录。

//tried this for first time
$upload_dir = getcwd().'upload/img';
//then tried this
$upload_dir = 'upload/img';
//and tried couple of others, but more lame, so I will not post it...

问题在于提出了无法打开流的警告:没有这样的文件或目录,另一个无法将$ temp_name移动到' upload / img'。

真的不知道哪里出错了。我确信这是一个蹩脚的问题,但不知道如何做好。

2 个答案:

答案 0 :(得分:1)

使用魔术宏__FILE__获取当前文件的路径,即脚本的绝对路径。要获取当前文件夹,请使用dirname(__FILE__)

你应该能够将其余的路径逻辑作为基础。

答案 1 :(得分:0)

首先,作为应用程序设计人员,您必须为上传目录选择合适的位置(或者让用户在安装时选择一个)。通常选择此位置位于您的Web目录根目录之外,这样任何人都无法键入URL并获得对上载文件的直接访问权限,但也可以通过其他方式安排此位置。

然后,您必须确保Web服务器提供此directory existsis writable;可以通过要求用户将其作为手动安装步骤或通过包含安装程序"来适当地创建和设置目录。脚本作为您的应用程序的一部分。

最后,当实际上传文件时,您必须构建上传目录的路径。有很多方法可以做到这一点(它还取决于您选择的位置,是否允许管理员选择自己的位置等),但通常这是通过读取写入某个配置文件的变量的值来完成的,例如

// config.php
$DIR_UPLOAD = '/var/www/upload/';

此值将由安装程序脚本放置在那里,或由管理员在安装时手动放置。