Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 移动上传的文件如何建立上传目录_Php - Fatal编程技术网

Php 移动上传的文件如何建立上传目录

Php 移动上传的文件如何建立上传目录,php,Php,我问了一个简单的问题,但在谷歌上找不到答案。我正在构建一个必须在各种服务器上运行的应用程序,我不知道它是安装在root、subdir还是以任何其他方式。此外,我不知道它是否会安装在IIS、Apache或其他类型的od服务器上。我有一个非常严重的问题。如何建立一个上传目录,这将永远是好的。上传目录将在一个应用程序文件夹中,所以我有一些要点要开始,但我不知道如何编写正确的上传目录 //tried this for first time $upload_dir = getcwd().'upload/i

我问了一个简单的问题,但在谷歌上找不到答案。我正在构建一个必须在各种服务器上运行的应用程序,我不知道它是安装在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”


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

使用神奇的宏
\uuuu FILE\uuuu
获取当前文件的路径,即脚本的绝对路径。要获取当前文件夹,请使用
dirname(\uu文件)


您应该能够在此基础上创建其余的路径逻辑。

首先,作为应用程序设计者,您必须为上载目录选择一个适当的位置(或者让用户在安装时选择一个)。此位置通常选择在web目录根之外,这样就没有人可以键入URL并直接访问上载的文件,但也可以通过其他方式进行安排

然后你必须确保这一点,并通过网络服务器;可以通过要求用户作为手动安装步骤来创建和设置目录,也可以将“安装程序”脚本作为应用程序的一部分来创建和设置目录

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

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

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

我尝试过这样做,但代码位于目录树中的depper类中,因此它可以获取该文件的位置,这对我没有好处。我尝试使用getcwd()。'upload/img'更好…是否有一些好的参数可以从url隐藏文件?反正我需要url来做吗?@neosatan:通常你会让这个url成为一个PHP脚本,它接受一个
$\u GET
参数,并用它传递目标文件的内容。如果执行此操作,脚本可以在授予文件访问权限之前执行访问控制。另一方面,如果文件可以直接访问,那么任何拥有URL的人都可以访问它,而你对此没有控制权。这是个好主意。通常,我实现了一些访问控制,但仅限于不需要直接URL的文件,例如可以访问设计中的图像。对我来说,对每个上传的文件都这样做的想法仍然是新鲜事,但我想知道它的性能如何?对于必须访问的文件,这不是在浪费CPU周期吗?还是我错了?@neosatan:要么你需要访问控制,要么你不需要。CPU周期不在考虑范围之内。解决方案是在getcwd()和内部路径之间添加一个缺少的“/”。这就成功了。我不知道为什么我错过了身份证。