Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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
在存在script.php的目录外上载文件_Php - Fatal编程技术网

在存在script.php的目录外上载文件

在存在script.php的目录外上载文件,php,Php,我的目录结构如下 Root |---Includes | |--script.php | |---uploads | | |---index.php My index.php有一个表单,该表单使用名称并将其发布到script.php文件。我想在上载中创建文件夹 script.php if(isset($_POST['name'])) { mkdir('../uploads/'.$_POST['name']); } 当

我的目录结构如下

  Root
    |---Includes
    |      |--script.php
    |
    |---uploads
    |
    |
    |---index.php
My index.php有一个表单,该表单使用名称并将其发布到script.php文件。我想在上载中创建文件夹

script.php

if(isset($_POST['name']))

{
  mkdir('../uploads/'.$_POST['name']);
}

当我将script.php移动到根文件夹并删除../时,这运行正常,但当我使用上面的代码时,这不起作用

尝试以下操作(假设您在Apache上运行网站)

此外,我还避免直接使用
$\u POST
变量,因为您可能希望文件夹有干净的名称

如果要使用相对路径,可以使用

$destination = sprintf('%s/../uploads/%s', dirname(__FILE__), $_POST['name']);

index.php包含script.php,当前文件夹是Root,无论包含的文件在哪里。只需使用
dirname(\uuuu FILE\uuuuu)
即可获取包含脚本的当前文件夹。您的代码应该是:

if(isset($_POST['name']))
{
  mkdir( dirname(dirname(__FILE__)) . '/uploads/'.$_POST['name']);
}
调用dirname两次以获取Includes的父文件夹


另一个安全提示:不要对文件名使用未经检查的用户输入(_POST,_GET..)。更多信息可在此处找到:

是否有任何错误消息?您会收到哪些错误消息?设置了什么权限?因为
script.php
在您的
includes
目录中。您是从另一个目录中的脚本中包含上载脚本,还是直接调用它?
if(isset($_POST['name']))
{
  mkdir( dirname(dirname(__FILE__)) . '/uploads/'.$_POST['name']);
}