PHP open_basedir限制:(文件)不在允许的路径内

时间:2018-07-13 21:01:20

标签: php drive nas scandir open-basedir

以前,我曾尝试从另一个驱动器see here上传和查看文件。

Web文件位于C:驱动器上的htdocs文件夹中,但是我需要能够保存到D:驱动器上的文件夹中。我成功完成了这项任务。

通过更新php.ini文件中的open_basedir部分,我只是添加了如下附加扩展名:

open_basedir = 'C:\inetPub;D:\CargoDocsPDFs;'

然后,我可以使用PHP的scandir来确保可以看到D:驱动器中的文件夹,如下所示:

<?php
$files1 =  scandir('D:/CargoDocsPDFs');
var_dump($files1);
?>

哪些给了我以下内容:

array(6) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(9) "000000000" [3]=> string(10) "0000000000" [4]=> string(10) "0001782136" [5]=> string(10) "0004670615" }

这是我的新问题开始的地方...

我们已经有了一个新的驱动器,可以从中上载和查看文件。这是一个网络驱动器,比以前的D:驱动器分配了更多空间。

新的网络驱动器已被标记为S:驱动器。所以我想我可以再次简单地更新php.ini文件:

open_basedir = 'C:\inetPub;S:\CargoDocsPDFs'

然后,我运行相同的PHP scandir函数(打开错误报告):

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

//$files1 =  scandir('D:/CargoDocsPDFs');
$files2 =  scandir('S:/CargoDocsPDFs');

//var_dump($files1);
var_dump($files2);
?>

但是我遇到以下错误:

Warning: scandir(): open_basedir restriction in effect. File(S:/CargoDocsPDFs) is not within the allowed path(s): (C:\inetPub;S:\CargoDocsPDFs) in C:\inetpub\mylocation\CargoReadiness\test.php on line 14

Warning: scandir(S:/CargoDocsPDFs): failed to open dir: Operation not permitted in C:\inetpub\mylocation\CargoReadiness\test.php on line 14

Warning: scandir(): (errno 1): Operation not permitted in C:\inetpub\mylocation\CargoReadiness\test.php on line 14

bool(false)

为什么会收到这个新发现的错误,该如何解决?

编辑

以下是在以下2个驱动器中设置特权的方式。左侧的属性是我要连接的驱动器,即S:驱动器和网络驱动器。右侧的属性是D:驱动器,并且是我可以成功上传和查看PDF的驱动器。

enter image description here

如果您会注意到S:驱动器,则除特殊权限外,所有人的特权都已选中(完全控制也未选中,但您无法在图片中看到)。而D:驱动器,唯一检查的特权是“特殊权限”。

我不确定这是否与我的错误有关。

编辑2

据我了解,我一直试图连接的设备是NAS设备。我不确定这意味着什么,也不知道当前的问题是否与为什么我无法连接到设备有关。

0 个答案:

没有答案