首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用opendir()扫描/home/

使用opendir()扫描/home/
EN

Stack Overflow用户
提问于 2011-08-25 18:29:43
回答 4查看 20.8K关注 0票数 3

是否可以使用opendir和scandir扫描/home/目录。当我尝试执行脚本时,它显示权限被拒绝,我应该怎么做?

代码语言:javascript
复制
<?php

$dir = '/home/';
$dirs = scandir($dir);
?>
<pre>
<?php print_r($dirs); ?>
</pre>
EN

回答 4

Stack Overflow用户

发布于 2011-08-25 18:35:24

您可以使用is_readable('/home/')查看您是否有权限。如果没有,则需要确保该目录具有读取权限,可能是0755 (rwxr-xr-x)

票数 6
EN

Stack Overflow用户

发布于 2011-08-25 18:34:58

为了安全起见,PHP定义了一个'basedir',在它下面你是不允许访问的。正如Aleks G所说,还需要考虑文件权限。

这个问题谈到了如何绕过basedir的限制:How can I relax PHP's open_basedir restriction?

汤姆·黑格的回答被复制到这里:

您也可以使用Apache (假设这是您的web服务器)配置文件(例如httpd.conf)在每个目录的基础上轻松完成此操作。

代码语言:javascript
复制
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>

您还可以使用以下命令完全取消该限制

代码语言:javascript
复制
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>
票数 2
EN

Stack Overflow用户

发布于 2011-08-25 18:35:24

我不是PHP程序员,但我认为您的问题是,当PHP尝试打开目录时,它使用与apache相同的用户ID运行,而apache可能没有权限读取您的/home目录。

您可以通过更改/home上的权限或将apache userid添加到拥有home的组所有权的任何组中来修复此问题。

这可能是Apache配置文件中的问题。即使文件系统权限允许,您的httpd.conf文件也可能不允许访问/home。如果您的所有HTML文件都在/var/www中,通常就会出现这种情况。

可以将httpd.conf设置为允许从用户的主目录中提供文件。在这种情况下,权限将被授予/home内的目录,而不是/home本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7188806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档