外部硬盘上的PHP scandir在根目录下停止

外部硬盘上的PHP scandir在根目录下停止,php,apache,debian,raspberry-pi,raspbian,Php,Apache,Debian,Raspberry Pi,Raspbian,我在谷歌和这里都试着寻找答案,但到目前为止没有一个有帮助 我有一个带raspbian(debian)的raspberry pi,用于通过USB连接外部硬盘的操作系统。我已安装并通过网络共享它。驱动器安装为“/介质/备份”。我可以从服务器端和网络上的任何计算机访问驱动器上的文件和文件夹,而不会出现任何问题 我还试图托管一个Web服务器,它将显示硬盘上的前两级目录。如果我在PHP文件中使用以下代码: $dir = '/media'; $files1 = scandir($dir); print

我在谷歌和这里都试着寻找答案,但到目前为止没有一个有帮助

我有一个带raspbian(debian)的raspberry pi,用于通过USB连接外部硬盘的操作系统。我已安装并通过网络共享它。驱动器安装为“/介质/备份”。我可以从服务器端和网络上的任何计算机访问驱动器上的文件和文件夹,而不会出现任何问题

我还试图托管一个Web服务器,它将显示硬盘上的前两级目录。如果我在PHP文件中使用以下代码:

$dir    = '/media';
$files1 = scandir($dir);
print_r($files1);
结果是:

.
..
Backup
到目前为止,一切正常。。现在来谈谈这个问题。如果我尝试使用此代码:

$dir    = '/media/Backup';
$files1 = scandir($dir);
print_r($files1);
这将导致找不到任何文件/文件夹

我不确定这是PHP内部还是Debian内部访问驱动器的方式存在问题

由于我不确定问题出在哪里,所以我在这两个类别下都做了标记

非常感谢您的帮助


也许我的Apache驱动器访问级别有问题?

事实证明,我确实需要为用户“www data”添加访问我的外部驱动器的权限。对于未来有这个问题的人,以下是我所做的

我首先使用以下方法创建了一个目录(安装完成后将代表驱动器):

创建目录后,您现在可以将驱动器装载到该目录:

sudo mount /dev/sdb1 /media/HD2
其中/dev/sdb1是我的驱动器

接下来,我为驱动器的fstab添加一个条目:

sudo nano /etc/fstab
I向文件中添加另一个条目,如下所示:

/dev/sdb1    /media/HD2    vfat    permissions,defaults,auto    0    0
如果驱动器是fat32文件系统和ntfs,请使用vfat。不要使用任何空格;使用标签

保存fstab。 最后运行以下命令:

sudo chown -R www-data:www-data /media/HD2

这允许用户访问HD2中的所有文件和文件夹,其中包括apache的www数据。

听起来apache运行的用户似乎没有访问该驱动器的权限。我在研究中也这么认为。。apache的当前用户是www数据,组也是www数据。托管的Samba位于用户pi下(因为它是raspberry pi,pi有根)。每当我将apache用户和组更改为等于pi并尝试重新启动apache时,它都会告诉我用户无权访问apache文件夹..原因非常明显;Apache需要能够读取其配置文件等才能启动。简单而直接的解决方案是更改
/media/Backup
的权限,以允许
www-data
读取和执行访问(或者所有人,如果这很棘手的话)。
sudo chown -R www-data:www-data /media/HD2